[hackers] [sbase] chgrp: Update program usage and manpage || sin

From: <git_AT_suckless.org>
Date: Mon, 16 Feb 2015 17:51:29 +0100 (CET)

commit 0b89774e275091e6f9fb55ccd3902d1c0dd24082
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 Mon Feb 16 2015 - 17:51:29 CET

This archive was generated by hypermail 2.3.0 : Mon Feb 16 2015 - 18:00:15 CET