From 606f4681a29bc819b95f6cdd8735e8961e38bc7d Mon Sep 17 00:00:00 2001 From: "David M. Syzdek" Date: Mon, 11 Oct 2021 19:37:31 -0800 Subject: numconvert: adding ability to toggle output notations using order option --- src/numconvert.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/numconvert.c b/src/numconvert.c index 16b7bb1..2efbeb8 100644 --- a/src/numconvert.c +++ b/src/numconvert.c @@ -158,8 +158,8 @@ int main(int argc, char * argv[]) opt = MY_OPT_SPACE | MY_OPT_LIMIT; base = 0; - order = "abxod"; bases = 0; + order = NULL; while((c = getopt_long(argc, argv, short_opt, long_opt, &opt_index)) != -1) { @@ -258,6 +258,53 @@ int main(int argc, char * argv[]) }; }; + if ((order)) + { + bases = 0; + for(x = 0; (x < (int)strlen(order)); x++) + { + switch(order[x]) + { + case 'B': + case 'b': + opt |= MY_OPT_BIN; + bases++; + break; + + case 'D': + case 'd': + opt |= MY_OPT_DEC; + bases++; + break; + + case 'X': + case 'x': + opt |= MY_OPT_HEX; + bases++; + break; + + case 'O': + case 'o': + opt |= MY_OPT_OCT; + bases++; + break; + + case 'A': + case 'a': + opt |= MY_OPT_ASCII; + bases++; + break; + + default: + fprintf(stderr, "%s: unknown order option -- %c\n", PROGRAM_NAME, order[x]); + fprintf(stderr, "Try `%s --help' for more information.\n", PROGRAM_NAME); + return(1); + }; + }; + }; + if (!(order)) + order = "abxod"; + if (!(opt & (MY_OPT_BIN|MY_OPT_DEC|MY_OPT_HEX|MY_OPT_OCT|MY_OPT_ASCII))) { opt |= (MY_OPT_BIN|MY_OPT_DEC|MY_OPT_HEX|MY_OPT_OCT|MY_OPT_ASCII); -- cgit v1.2.3