aboutsummaryrefslogtreecommitdiff
path: root/coreutils/chgrp.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2006-10-27 23:28:38 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2006-10-27 23:28:38 +0000
commite80e2a3660bf09cc549cb2dfd2bdeb77ccde1231 (patch)
tree94303277042044e84dbdc28e2c2457e5b27009d4 /coreutils/chgrp.c
parent3b8fc1c582884d356df04b4984db3963bc129c48 (diff)
downloadbusybox-w32-e80e2a3660bf09cc549cb2dfd2bdeb77ccde1231.tar.gz
busybox-w32-e80e2a3660bf09cc549cb2dfd2bdeb77ccde1231.tar.bz2
busybox-w32-e80e2a3660bf09cc549cb2dfd2bdeb77ccde1231.zip
chgrp: just call chown! :)
Diffstat (limited to 'coreutils/chgrp.c')
-rw-r--r--coreutils/chgrp.c48
1 files changed, 10 insertions, 38 deletions
diff --git a/coreutils/chgrp.c b/coreutils/chgrp.c
index e62bd16f0..da5b12964 100644
--- a/coreutils/chgrp.c
+++ b/coreutils/chgrp.c
@@ -7,49 +7,21 @@
7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. 7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
8 */ 8 */
9 9
10/* BB_AUDIT SUSv3 defects - unsupported options -h, -H, -L, and -P. */ 10/* BB_AUDIT SUSv3 defects - unsupported options -H, -L, and -P. */
11/* BB_AUDIT GNU defects - unsupported options -h, -c, -f, -v, and long options. */ 11/* BB_AUDIT GNU defects - unsupported long options. */
12/* BB_AUDIT Note: gnu chgrp does not support -H, -L, or -P. */
13/* http://www.opengroup.org/onlinepubs/007904975/utilities/chgrp.html */ 12/* http://www.opengroup.org/onlinepubs/007904975/utilities/chgrp.html */
14 13
15#include <stdlib.h>
16#include <unistd.h>
17#include "busybox.h" 14#include "busybox.h"
18 15
19static int fileAction(const char *fileName, struct stat *statbuf, void* junk)
20{
21 if (lchown(fileName, statbuf->st_uid, *((long *) junk)) == 0) {
22 return (TRUE);
23 }
24 bb_perror_msg("%s", fileName); /* Avoid multibyte problems. */
25 return (FALSE);
26}
27
28int chgrp_main(int argc, char **argv) 16int chgrp_main(int argc, char **argv)
29{ 17{
30 long gid; 18 /* "chgrp [opts] abc file(s)" == "chown [opts] :abc file(s)" */
31 int recursiveFlag; 19 char **p = argv;
32 int retval = EXIT_SUCCESS; 20 while (*++p) {
33 21 if (p[0][0] != '-') {
34 recursiveFlag = getopt32(argc, argv, "R"); 22 p[0] = xasprintf(":%s", p[0]);
35 23 break;
36 if (argc - optind < 2) {
37 bb_show_usage();
38 }
39
40 argv += optind;
41
42 /* Find the selected group */
43 gid = get_ug_id(*argv, bb_xgetgrnam);
44 ++argv;
45
46 /* Ok, ready to do the deed now */
47 do {
48 if (! recursive_action (*argv, recursiveFlag, FALSE, FALSE,
49 fileAction, fileAction, &gid)) {
50 retval = EXIT_FAILURE;
51 } 24 }
52 } while (*++argv); 25 }
53 26 return chown_main(argc, argv);
54 return retval;
55} 27}