sbase

suckless unix tools
git clone git://git.2f30.org/sbase
Log | Files | Refs | README | LICENSE

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:
Mchgrp.1 | 21+++++++++++++--------
Mchgrp.c | 10+++++-----
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;