diff options
author | tjr <tjr@FreeBSD.org> | 2002-05-24 06:03:12 +0000 |
---|---|---|
committer | tjr <tjr@FreeBSD.org> | 2002-05-24 06:03:12 +0000 |
commit | 631d66bee1b5e3186b84f03f117b52a8d0868509 (patch) | |
tree | 09a83b33d2ca60d399a62239536484779cfaee70 /usr.bin/cut | |
parent | b0232fe861a5789bb4f3b6b49204886022769385 (diff) | |
download | FreeBSD-src-631d66bee1b5e3186b84f03f117b52a8d0868509.zip FreeBSD-src-631d66bee1b5e3186b84f03f117b52a8d0868509.tar.gz |
If processing of one file fails, try to process the remaining files and
exit non-zero instead of immediately exiting. The traditional BSD
behaviour is explicitly forbidden by P1003.2.
Diffstat (limited to 'usr.bin/cut')
-rw-r--r-- | usr.bin/cut/cut.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/usr.bin/cut/cut.c b/usr.bin/cut/cut.c index bb7f51f..93737fc 100644 --- a/usr.bin/cut/cut.c +++ b/usr.bin/cut/cut.c @@ -71,7 +71,7 @@ main(argc, argv) { FILE *fp; void (*fcn) (FILE *, const char *) = NULL; - int ch; + int ch, rval; fcn = NULL; setlocale (LC_ALL, ""); @@ -115,16 +115,20 @@ main(argc, argv) } else if (!cflag || dflag || sflag) usage(); + rval = 0; if (*argv) for (; *argv; ++argv) { - if (!(fp = fopen(*argv, "r"))) - err(1, "%s", *argv); + if (!(fp = fopen(*argv, "r"))) { + warn("%s", *argv); + rval = 1; + continue; + } fcn(fp, *argv); (void)fclose(fp); } else fcn(stdin, "stdin"); - exit(0); + exit(rval); } size_t autostart, autostop, maxval; |