sbase

suckless unix tools
git clone git://git.2f30.org/sbase.git
Log | Files | Refs | README | LICENSE

commit c323f6f2331512003bd53a7da18e1250c2cb5c9c
parent 9ad5ca5a1523adb84efcb9d5302bb19e1692d539
Author: Daniel Bainton <dpb@driftaway.org>
Date:   Mon May  5 11:11:37 +0300

Support reading checksums from stdin

Diffstat:
md5sum.c | 7+++++--
sha1sum.c | 7+++++--
sha256sum.c | 7+++++--
sha512sum.c | 7+++++--
util/crypt.c | 7+++++--
5 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/md5sum.c b/md5sum.c @@ -1,4 +1,5 @@ /* See LICENSE file for copyright and license details. */ +#include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <stdint.h> @@ -25,16 +26,18 @@ main(int argc, char *argv[]) { uint8_t md[MD5_DIGEST_LENGTH]; char *checkfile = NULL; + bool cflag = false; ARGBEGIN { case 'c': - checkfile = EARGF(usage()); + cflag = true; + checkfile = ARGF(); break; default: usage(); } ARGEND; - if(checkfile) + if(cflag) return cryptcheck(checkfile, argc, argv, &md5_ops, md, sizeof(md)); return cryptmain(argc, argv, &md5_ops, md, sizeof(md)); } diff --git a/sha1sum.c b/sha1sum.c @@ -1,4 +1,5 @@ /* See LICENSE file for copyright and license details. */ +#include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <stdint.h> @@ -25,16 +26,18 @@ main(int argc, char *argv[]) { uint8_t md[SHA1_DIGEST_LENGTH]; char *checkfile = NULL; + bool cflag = false; ARGBEGIN { case 'c': - checkfile = EARGF(usage()); + cflag = true; + checkfile = ARGF(); break; default: usage(); } ARGEND; - if(checkfile) + if(cflag) return cryptcheck(checkfile, argc, argv, &sha1_ops, md, sizeof(md)); return cryptmain(argc, argv, &sha1_ops, md, sizeof(md)); } diff --git a/sha256sum.c b/sha256sum.c @@ -1,4 +1,5 @@ /* See LICENSE file for copyright and license details. */ +#include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <stdint.h> @@ -25,16 +26,18 @@ main(int argc, char *argv[]) { uint8_t md[SHA256_DIGEST_LENGTH]; char *checkfile = NULL; + bool cflag = false; ARGBEGIN { case 'c': - checkfile = EARGF(usage()); + cflag = true; + checkfile = ARGF(); break; default: usage(); } ARGEND; - if(checkfile) + if(cflag) return cryptcheck(checkfile, argc, argv, &sha256_ops, md, sizeof(md)); return cryptmain(argc, argv, &sha256_ops, md, sizeof(md)); } diff --git a/sha512sum.c b/sha512sum.c @@ -1,4 +1,5 @@ /* See LICENSE file for copyright and license details. */ +#include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <stdint.h> @@ -25,16 +26,18 @@ main(int argc, char *argv[]) { uint8_t md[SHA512_DIGEST_LENGTH]; char *checkfile = NULL; + bool cflag = false; ARGBEGIN { case 'c': - checkfile = EARGF(usage()); + cflag = true; + checkfile = ARGF(); break; default: usage(); } ARGEND; - if(checkfile) + if(cflag) return cryptcheck(checkfile, argc, argv, &sha512_ops, md, sizeof(md)); return cryptmain(argc, argv, &sha512_ops, md, sizeof(md)); } diff --git a/util/crypt.c b/util/crypt.c @@ -45,7 +45,9 @@ cryptcheck(char *sumfile, int argc, char *argv[], int r, nonmatch = 0, formatsucks = 0, noread = 0, ret = EXIT_SUCCESS; size_t bufsiz = 0; - if(!(cfp = fopen(sumfile, "r"))) + if(sumfile == NULL) + cfp = stdin; + else if(!(cfp = fopen(sumfile, "r"))) eprintf("fopen %s:", sumfile); while(afgets(&line, &bufsiz, cfp)) { @@ -78,7 +80,8 @@ cryptcheck(char *sumfile, int argc, char *argv[], } fclose(fp); } - fclose(cfp); + if(sumfile != NULL) + fclose(cfp); free(line); if(formatsucks > 0) { weprintf("%d lines are improperly formatted\n", formatsucks);