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/md5sum.c | |
parent | 026c679f49ca89b7585d3ee3364d154c2b00cc3a (diff) |
sum, md5sum, sha1sum: set exit status properly on open/read errors
Diffstat (limited to 'sys/src/cmd/md5sum.c')
-rw-r--r-- | sys/src/cmd/md5sum.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/src/cmd/md5sum.c b/sys/src/cmd/md5sum.c index 173f4b8df..1497b4735 100644 --- a/sys/src/cmd/md5sum.c +++ b/sys/src/cmd/md5sum.c @@ -4,6 +4,8 @@ #pragma varargck type "M" uchar* +static char exitstr[ERRMAX]; + static int digestfmt(Fmt *fmt) { @@ -28,7 +30,8 @@ sum(int fd, char *name) while((n = read(fd, buf, sizeof buf)) > 0) md5(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; } md5(nil, 0, digest, s); @@ -56,11 +59,12 @@ main(int argc, char *argv[]) else for(i = 0; i < argc; i++){ fd = open(argv[i], OREAD); if(fd < 0){ - fprint(2, "md5sum: can't open %s: %r\n", 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); } |