diff --git a/chgrp.1 b/chgrp.1 index 9f7b82e..3dc5ce8 100644 --- 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 index d31d6a7..0d55ce8 100644 --- 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;