rp

simple email tools
git clone https://git.parazyd.org/rp
Log | Files | Refs | README | LICENSE

commit a17db57c9663e0e4c060716b9bb83320c8f30fde
parent e80b9d4c13eb2332d1a9fb555e73508fa3607b11
Author: parazyd <parazyd@dyne.org>
Date:   Sat, 22 Dec 2018 11:23:49 -0500

Simplify rputil util choice.

Diffstat:
Mrohrpost.c | 1-
Mutil.c | 38+++++++++++++++++++++-----------------
Mutil.h | 7+++----
3 files changed, 24 insertions(+), 22 deletions(-)

diff --git a/rohrpost.c b/rohrpost.c @@ -37,7 +37,6 @@ struct command cmds[] = { }; int main(int argc, char *argv[]) { - int i; char *lsl; diff --git a/util.c b/util.c @@ -27,6 +27,11 @@ void utilusage(void) { " * getfpr: get tls fingerprint of $netspec\n", argv0); } +struct util { + char *cmd; + int (*func)(char *); +}; + int randint(int max) { unsigned int ret; FILE *f; @@ -51,7 +56,7 @@ char *randstring(char *str, int size) { } -int genmsgid(void) { +int genmsgid(char *foo) { char buf[15]; time_t now = time(0); strftime(buf, 15, "%Y%m%d%H%M%S", localtime(&now)); @@ -59,15 +64,16 @@ int genmsgid(void) { return 0; } -int genmimeb(void) { +int genmimeb(char *foo) { char buf[6]; randstring(buf, sizeof(buf)); printf("%sFuNkADeLiC\n", buf); return 0; } -int humansize(unsigned long size) { +int humansize(char *sizestr) { int i = 0; + unsigned long size = atol(sizestr); const char *units[] = {"Bytes", "KiB", "MiB", "GiB"}; while (size > 1024) { size /= 1024; @@ -111,7 +117,15 @@ getfprend: return 0; } +struct util utils[] = { + {"genmsgid", genmsgid}, + {"genmimeb", genmimeb}, + {"humansize", humansize}, + {"getfpr", getfpr}, +}; + int utilmain(int argc, char *argv[]) { + int i; char *runcmd = NULL; ARGBEGIN { @@ -125,20 +139,10 @@ int utilmain(int argc, char *argv[]) { if (runcmd == NULL) utilusage(); - if (!strncmp("genmsgid", runcmd, 8)) - return genmsgid(); - - if (!strncmp("genmimeb", runcmd, 8)) - return genmimeb(); - - if (argc < 1) - utilusage(); - - if (!strncmp("humansize", runcmd, 9)) - return humansize(atol(argv[0])); - - if (!strncmp("getfpr", runcmd, 6)) - return getfpr(argv[0]); + for (i = 0; i < nelem(utils); i++) { + if (!strcmp(runcmd, utils[i].cmd)) + return utils[i].func(argv[0]); + } utilusage(); return 1; diff --git a/util.h b/util.h @@ -11,10 +11,9 @@ int utilmain(int argc, char *argv[]); int *randint(int max); char *randstring(char *str, int size); -int genmsgid(void); -int genmimeb(void); - -int humansize(unsigned long amnt); +int genmsgid(char *foo); +int genmimeb(char *foo); +int humansize(char *sizestr); int getfpr(char *desc); #endif