diff options
author | mischief <mischief@offblast.org> | 2018-09-18 15:58:22 -0700 |
---|---|---|
committer | mischief <mischief@offblast.org> | 2018-09-18 15:58:22 -0700 |
commit | d73c67660bd2573787e99c300806c2f1394a8b52 (patch) | |
tree | 79bf71f26b516f49ffe93dfc715d7b5fe9406762 /sys/src/cmd/sha1sum.c | |
parent | 026c679f49ca89b7585d3ee3364d154c2b00cc3a (diff) |
sum, md5sum, sha1sum: set exit status properly on open/read errors
Diffstat (limited to 'sys/src/cmd/sha1sum.c')
-rw-r--r-- | sys/src/cmd/sha1sum.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/src/cmd/sha1sum.c b/sys/src/cmd/sha1sum.c index c023ae8e0..4ce7f0d19 100644 --- a/sys/src/cmd/sha1sum.c +++ b/sys/src/cmd/sha1sum.c @@ -7,6 +7,8 @@ #pragma varargck type "M" uchar* +static char exitstr[ERRMAX]; + typedef struct Sha2 Sha2; struct Sha2 { int bits; @@ -48,7 +50,8 @@ sum(int fd, char *name) while((n = read(fd, buf, sizeof buf)) > 0) (*shafunc)(buf, n, nil, s); if(n < 0){ - fprint(2, "reading %s: %r\n", name? name: "stdin"); + snprint(exitstr, sizeof(exitstr), "reading %s: %r\n", name? name: "stdin"); + fprint(2, "%s", exitstr); return; } (*shafunc)(nil, 0, digest, s); @@ -96,11 +99,12 @@ main(int argc, char *argv[]) for(i = 0; i < argc; i++){ fd = open(argv[i], OREAD); if(fd < 0){ - fprint(2, "%s: can't open %s: %r\n", argv0, argv[i]); + snprint(exitstr, sizeof(exitstr), "can't open %s: %r", argv[i]); + fprint(2, "%s: %s\n", argv0, exitstr); continue; } sum(fd, argv[i]); close(fd); } - exits(nil); + exits(exitstr); } |