diff options
author | eadler <eadler@FreeBSD.org> | 2012-11-15 15:16:50 +0000 |
---|---|---|
committer | eadler <eadler@FreeBSD.org> | 2012-11-15 15:16:50 +0000 |
commit | c7b3f7ffa9fdf5d5e048af9459d1831732472de5 (patch) | |
tree | 854ebecfcbbe23e89aa711b52c64304b08bd7c13 /usr.sbin/chkgrp/chkgrp.c | |
parent | 2870d7badbaa8a19ad288c1530c39f7bd4dc4020 (diff) | |
download | FreeBSD-src-c7b3f7ffa9fdf5d5e048af9459d1831732472de5.zip FreeBSD-src-c7b3f7ffa9fdf5d5e048af9459d1831732472de5.tar.gz |
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
MFC after: 1 week
Diffstat (limited to 'usr.sbin/chkgrp/chkgrp.c')
-rw-r--r-- | usr.sbin/chkgrp/chkgrp.c | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/usr.sbin/chkgrp/chkgrp.c b/usr.sbin/chkgrp/chkgrp.c index 82fa866..c76b67f 100644 --- a/usr.sbin/chkgrp/chkgrp.c +++ b/usr.sbin/chkgrp/chkgrp.c @@ -37,11 +37,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"); @@ -53,24 +54,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_NOINPUT, "%s", gfn); @@ -178,7 +188,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); } |