Author: eadler
Date: Mon Dec 10 02:33:16 2012
New Revision: 244065
URL: http://svnweb.freebsd.org/changeset/base/244065

Log:
  MFC r243084:
        Add support for a -q flag.  While here make the custom argument parsing
        use getopt instead of hacking on it more.  This change also fixes the
        method of silencing the compiler warning about gfn being used
        uninitialized.
  
  Approved by:  cperciva (implicit)

Modified:
  stable/7/usr.sbin/chkgrp/chkgrp.8
  stable/7/usr.sbin/chkgrp/chkgrp.c
Directory Properties:
  stable/7/usr.sbin/chkgrp/   (props changed)

Modified: stable/7/usr.sbin/chkgrp/chkgrp.8
==============================================================================
--- stable/7/usr.sbin/chkgrp/chkgrp.8   Mon Dec 10 02:33:16 2012        
(r244064)
+++ stable/7/usr.sbin/chkgrp/chkgrp.8   Mon Dec 10 02:33:16 2012        
(r244065)
@@ -34,6 +34,7 @@
 .Nd check the syntax of the group file
 .Sh SYNOPSIS
 .Nm
+.Op Fl q
 .Op Ar groupfile
 .Sh DESCRIPTION
 The
@@ -47,6 +48,12 @@ contains whitespace, and that the third 
 numeric.
 It will also check for invalid characters in the group names
 and group members.
+The following options are available:
+.Bl -tag -width indent
+.It Fl q
+This option disables printing of text when the group format
+is correct.
+.El
 .Sh FILES
 .Bl -tag -width /etc/group -compact
 .It Pa /etc/group

Modified: stable/7/usr.sbin/chkgrp/chkgrp.c
==============================================================================
--- stable/7/usr.sbin/chkgrp/chkgrp.c   Mon Dec 10 02:33:16 2012        
(r244064)
+++ stable/7/usr.sbin/chkgrp/chkgrp.c   Mon Dec 10 02:33:16 2012        
(r244065)
@@ -34,11 +34,12 @@ __FBSDID("$FreeBSD$");
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 #include <sysexits.h>
 
 static char empty[] = { 0 };
 
-static void
+static void __dead2
 usage(void)
 {
     fprintf(stderr, "usage: chkgrp [groupfile]\n");
@@ -50,24 +51,33 @@ main(int argc, char *argv[])
 {
     unsigned int i;
     size_t len;
+    int quiet;
+    int ch;
     int n = 0, k, e = 0;
     char *line, *f[4], *p;
     const char *cp, *gfn;
     FILE *gf;
 
-    /* check arguments */
-    switch (argc) {
-    case 1:
-       gfn = "/etc/group";
-       break;
-    case 2:
-       gfn = argv[1];
-       break;
-    default:
-       gfn = NULL; /* silence compiler */
-       usage();
+    quiet = 0;
+    while ((ch = getopt(argc, argv, "q")) != -1) {
+           switch (ch) {
+               case 'q':
+                       quiet = 1;
+                       break;
+               case '?':
+               default:
+                       printf("hello\n");
+                       usage();
+           }
     }
 
+    if (optind == argc)
+           gfn = "/etc/group";
+    else if (optind == argc - 1)
+           gfn = argv[optind];
+    else
+           usage();
+
     /* open group file */
     if ((gf = fopen(gfn, "r")) == NULL)
        err(EX_IOERR, "%s", gfn); /* XXX - is IO_ERR the correct exit code? */
@@ -163,7 +173,7 @@ main(int argc, char *argv[])
 
     /* done */
     fclose(gf);
-    if (e == 0)
+    if (e == 0 && quiet == 0)
        printf("%s is fine\n", gfn);
     exit(e ? EX_DATAERR : EX_OK);
 }
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to