commit 1d05b293e1b7a460d7804d20e0cf1026bdf70bce
parent 8f068589fbda368eb77953e05319646d7c445c5c
Author: sin <sin@2f30.org>
Date: Mon, 16 Feb 2015 16:30:43 +0000
chgrp: Update program usage and manpage
-h is incompatible with -R so handle that properly as well.
Diffstat:
2 files changed, 18 insertions(+), 13 deletions(-)
diff --git a/chgrp.1 b/chgrp.1
@@ -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
@@ -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
@@ -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";
@@ -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
@@ -43,7 +43,7 @@ main(int argc, char *argv[])
chown_f = lchown;
break;
case 'R':
- rflag = 1;
+ Rflag = 1;
break;
case 'H':
case 'L':
@@ -54,7 +54,7 @@ main(int argc, char *argv[])
usage();
} ARGEND;
- if (argc < 2)
+ if (argc < 2 || (chown_f == lchown && Rflag))
usage();
errno = 0;