[hackers] [sbase] chgrp: Update program usage and manpage || sin
commit 1d05b293e1b7a460d7804d20e0cf1026bdf70bce
Author: sin <sin_AT_2f30.org>
Date: Mon Feb 16 16:30:43 2015 +0000
chgrp: Update program usage and manpage
-h is incompatible with -R so handle that properly as well.
diff --git a/chgrp.1 b/chgrp.1
index 9f7b82e..3dc5ce8 100644
--- a/chgrp.1
+++ b/chgrp.1
_AT_@ -6,20 +6,25 @@
.Nd change the file group ownership
.Sh SYNOPSIS
.Nm
-.Op Fl R
-.Op Fl H
-.Op Fl L
-.Op Fl P
-.Ar groupname
-.Op Ar file...
+.Op Fl h
+.Oo
+.Fl R
+.Op Fl H | L | P
+.Oc
+.Ar group
+.Ar file...
.Sh DESCRIPTION
.Nm
sets the group id of the files specified by
.Ar file
to the gid of the group named
-.Ar group.
+.Ar group .
.Sh OPTIONS
.Bl -tag -width Ds
+.It Fl h
+Change the group ID of the symlink itself. This flag cannot be used
+with
+.Op Fl R .
.It Fl R
Change file group ownership recursively.
.It Fl H
_AT_@ -42,4 +47,4 @@ The
.Nm
utility is compliant with the
.St -p1003.1-2008
-specification except from the -h flag.
+specification.
diff --git a/chgrp.c b/chgrp.c
index d31d6a7..0d55ce8 100644
--- a/chgrp.c
+++ b/chgrp.c
_AT_@ -9,7 +9,7 @@
static int gid;
static int status;
-static int rflag;
+static int Rflag;
static int fflag = 'P';
static struct stat st;
static char *chown_f_name = "chown";
_AT_@ -22,14 +22,14 @@ chgrp(const char *path, int fflag)
weprintf("%s %s:", chown_f_name, path);
status = 1;
}
- if (rflag)
+ if (Rflag)
recurse(path, chgrp, fflag);
}
static void
usage(void)
{
- eprintf("usage: chgrp [-hR] groupname file...\n");
+ eprintf("usage: chgrp [-h] [-R [-H | -L | -P]] group file ...\n");
}
int
_AT_@ -43,7 +43,7 @@ main(int argc, char *argv[])
chown_f = lchown;
break;
case 'R':
- rflag = 1;
+ Rflag = 1;
break;
case 'H':
case 'L':
_AT_@ -54,7 +54,7 @@ main(int argc, char *argv[])
usage();
} ARGEND;
- if (argc < 2)
+ if (argc < 2 || (chown_f == lchown && Rflag))
usage();
errno = 0;
Received on Tue Mar 24 2015 - 23:53:52 CET
This archive was generated by hypermail 2.3.0
: Wed Mar 25 2015 - 00:10:24 CET