diff options
author | tjr <tjr@FreeBSD.org> | 2002-05-15 03:17:01 +0000 |
---|---|---|
committer | tjr <tjr@FreeBSD.org> | 2002-05-15 03:17:01 +0000 |
commit | c0844f47a40f8e16ad76cf2b85df48806795d04b (patch) | |
tree | a9b87843d5391b60abb57e441081c5574bbfc7bb /usr.bin/asa/asa.c | |
parent | 5fce6fe1a74674bdaaeccb716b38f178a5451a25 (diff) | |
download | FreeBSD-src-c0844f47a40f8e16ad76cf2b85df48806795d04b.zip FreeBSD-src-c0844f47a40f8e16ad76cf2b85df48806795d04b.tar.gz |
Use getopt() to reject options (asa has none), and to the "--" end of options
marker. Exit non-zero if we cannot open one of the input files. Update
standards conformance and exit status statements in manual page.
PR: 36130
Approved by: mike
Diffstat (limited to 'usr.bin/asa/asa.c')
-rw-r--r-- | usr.bin/asa/asa.c | 47 |
1 files changed, 34 insertions, 13 deletions
diff --git a/usr.bin/asa/asa.c b/usr.bin/asa/asa.c index 41d189d..8e2b2d7 100644 --- a/usr.bin/asa/asa.c +++ b/usr.bin/asa/asa.c @@ -43,29 +43,50 @@ __FBSDID("$FreeBSD$"); #include <stdlib.h> static void asa(FILE *); +static void usage(void); int main(int argc, char *argv[]) { + int ch, exval; FILE *fp; + const char *fn; - /* skip progname */ - argv++; + while ((ch = getopt(argc, argv, "")) != -1) { + switch (ch) { + case '?': + default: + usage(); + /*NOTREACHED*/ + } + } + argc -= optind; + argv += optind; - fp = stdin; - do { - if (*argv != NULL) { - if ((fp = fopen(*argv, "r")) == NULL) { - warn("%s", *argv); + exval = 0; + if (argc == 0) + asa(stdin); + else { + while ((fn = *argv++) != NULL) { + if ((fp = fopen(fn, "r")) == NULL) { + warn("%s", fn); + exval = 1; continue; } - } - asa(fp); - if (fp != stdin) - (void)fclose(fp); - } while (*argv++ != NULL); + asa(fp); + fclose(fp); + } + } + + exit(exval); +} + +static void +usage(void) +{ - exit(0); + fprintf(stderr, "usage: asa [file...]\n"); + exit(1); } static void |