sbase

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

commit 573d1954b28d81871d18683bdad14e02918c4f83
parent 4d014e66fd13503a71ad424a333c7c69692b23e8
Author: sin <sin@2f30.org>
Date:   Mon Sep  2 11:17:55 +0100

Add cryptmain() and factor out the code from the crypt tools

Diffstat:
crypt.h | 2++
md5sum.c | 17+----------------
sha1sum.c | 17+----------------
sha256sum.c | 17+----------------
sha512sum.c | 17+----------------
util/crypt.c | 22++++++++++++++++++++++
6 files changed, 28 insertions(+), 64 deletions(-)
diff --git a/crypt.h b/crypt.h @@ -5,6 +5,8 @@ struct crypt_ops { void *s; }; +int cryptmain(int argc, char *argv[], + struct crypt_ops *ops, uint8_t *md, size_t sz); int cryptsum(struct crypt_ops *ops, FILE *fp, const char *f, uint8_t *md); void mdprint(const uint8_t *md, const char *f, size_t len); diff --git a/md5sum.c b/md5sum.c @@ -23,7 +23,6 @@ usage(void) int main(int argc, char *argv[]) { - FILE *fp; uint8_t md[MD5_DIGEST_LENGTH]; ARGBEGIN { @@ -33,19 +32,5 @@ main(int argc, char *argv[]) usage(); } ARGEND; - if (argc == 0) { - cryptsum(&md5_ops, stdin, "<stdin>", md); - mdprint(md, "<stdin>", sizeof(md)); - } else { - for (; argc > 0; argc--) { - if ((fp = fopen(*argv, "r")) == NULL) - eprintf("fopen %s:", *argv); - cryptsum(&md5_ops, fp, *argv, md); - mdprint(md, *argv, sizeof(md)); - fclose(fp); - argv++; - } - } - - return 0; + return cryptmain(argc, argv, &md5_ops, md, sizeof(md)); } diff --git a/sha1sum.c b/sha1sum.c @@ -23,7 +23,6 @@ usage(void) int main(int argc, char *argv[]) { - FILE *fp; uint8_t md[SHA1_DIGEST_LENGTH]; ARGBEGIN { @@ -33,19 +32,5 @@ main(int argc, char *argv[]) usage(); } ARGEND; - if (argc == 0) { - cryptsum(&sha1_ops, stdin, "<stdin>", md); - mdprint(md, "<stdin>", sizeof(md)); - } else { - for (; argc > 0; argc--) { - if ((fp = fopen(*argv, "r")) == NULL) - eprintf("fopen %s:", *argv); - cryptsum(&sha1_ops, fp, *argv, md); - mdprint(md, *argv, sizeof(md)); - fclose(fp); - argv++; - } - } - - return 0; + return cryptmain(argc, argv, &sha1_ops, md, sizeof(md)); } diff --git a/sha256sum.c b/sha256sum.c @@ -23,7 +23,6 @@ usage(void) int main(int argc, char *argv[]) { - FILE *fp; uint8_t md[SHA256_DIGEST_LENGTH]; ARGBEGIN { @@ -33,19 +32,5 @@ main(int argc, char *argv[]) usage(); } ARGEND; - if (argc == 0) { - cryptsum(&sha256_ops, stdin, "<stdin>", md); - mdprint(md, "<stdin>", sizeof(md)); - } else { - for (; argc > 0; argc--) { - if ((fp = fopen(*argv, "r")) == NULL) - eprintf("fopen %s:", *argv); - cryptsum(&sha256_ops, fp, *argv, md); - mdprint(md, *argv, sizeof(md)); - fclose(fp); - argv++; - } - } - - return 0; + return cryptmain(argc, argv, &sha256_ops, md, sizeof(md)); } diff --git a/sha512sum.c b/sha512sum.c @@ -23,7 +23,6 @@ usage(void) int main(int argc, char *argv[]) { - FILE *fp; uint8_t md[SHA512_DIGEST_LENGTH]; ARGBEGIN { @@ -33,19 +32,5 @@ main(int argc, char *argv[]) usage(); } ARGEND; - if (argc == 0) { - cryptsum(&sha512_ops, stdin, "<stdin>", md); - mdprint(md, "<stdin>", sizeof(md)); - } else { - for (; argc > 0; argc--) { - if ((fp = fopen(*argv, "r")) == NULL) - eprintf("fopen %s:", *argv); - cryptsum(&sha512_ops, fp, *argv, md); - mdprint(md, *argv, sizeof(md)); - fclose(fp); - argv++; - } - } - - return 0; + return cryptmain(argc, argv, &sha512_ops, md, sizeof(md)); } diff --git a/util/crypt.c b/util/crypt.c @@ -5,6 +5,28 @@ #include "../crypt.h" int +cryptmain(int argc, char *argv[], + struct crypt_ops *ops, uint8_t *md, size_t sz) +{ + FILE *fp; + + if (argc == 0) { + cryptsum(ops, stdin, "<stdin>", md); + mdprint(md, "<stdin>", sz); + } else { + for (; argc > 0; argc--) { + if ((fp = fopen(*argv, "r")) == NULL) + eprintf("fopen %s:", *argv); + cryptsum(ops, fp, *argv, md); + mdprint(md, *argv, sz); + fclose(fp); + argv++; + } + } + return 0; +} + +int cryptsum(struct crypt_ops *ops, FILE *fp, const char *f, uint8_t *md) {