From: Laurent Mazet Date: Sun, 31 Dec 2023 05:25:34 +0000 (+0100) Subject: embellish usage display X-Git-Tag: v1.3~1 X-Git-Url: https://secure.softndesign.org/git/?p=calc.git;a=commitdiff_plain;h=868158ee9a292bf75ebf70fade1007084b9ee1cd embellish usage display --- diff --git a/calc.c b/calc.c index a84a300..4f23857 100644 --- a/calc.c +++ b/calc.c @@ -31,18 +31,32 @@ int precision = 6; /* help function */ +#define PRINT_OPTION(fid, option, message, format, ...) \ + do { \ + fprintf (fid, " %s: %s", option, message); \ + if (format) { \ + fprintf (fid, " ("); \ + color_set (fid, FG_BLACK | BG_WHITE); \ + fprintf (fid, format ? format : "xx", ## __VA_ARGS__); \ + color_set (fid, COLOR_DEFAULT); \ + fprintf (fid, ")"); \ + } \ + fprintf (fid, "\n"); \ + } while (0); + int usage (int ret) { FILE *fid = ret ? stderr : stdout; + color_set (fid, UNDERLINE); fprintf (fid, "usage: %s\n", progname); - fprintf (fid, " -h : help message\n"); - fprintf (fid, " -b : in/out-put base (%s)\n", show_base ()); - fprintf (fid, " -i : input prompt (%s)\n", oprompt); - fprintf (fid, " -n : no readline mode (%s)\n", mode ? "yes" : "no"); - fprintf (fid, " -n : no readline mode (%s)\n", mode ? "yes" : "no"); - fprintf (fid, " -o : output prompt (%s)\n", oprompt); - fprintf (fid, " -p : precision (%d)\n", precision); - fprintf (fid, " -v : verbose level (%d)\n", verbose); + color_set (fid, COLOR_DEFAULT); + PRINT_OPTION (fid, "-b", "in/out-put base", "%s", show_base ()); + PRINT_OPTION (fid, "-h", "help message", NULL); + PRINT_OPTION (fid, "-i", "input prompt", "%s", oprompt); + PRINT_OPTION (fid, "-n", "no readline mode", "%s", mode ? "yes" : "no"); + PRINT_OPTION (fid, "-o", "output prompt", "%s", oprompt); + PRINT_OPTION (fid, "-p", "precision", "%d", precision); + PRINT_OPTION (fid, "-v", "verbose level", "%d", verbose); return ret; } @@ -242,6 +256,7 @@ int main (int argc, char *argv[]) // test: calc.exe -o 2>&1 | grep -q 'missing output prompt' // test: calc.exe -p 2>&1 | grep -q 'missing precision' // test: calc.exe -v 2>&1 | grep -q 'missing verbose' +// test: echo "1 +" | calc.exe; test $? -eq 1 // test: echo "1 + 1" | calc.exe -i '# ' | grep -q '# 1 + 1' // test: echo "1 + 1" | calc.exe -i '# ' -i 'x ' | grep -q 'x 1 + 1' // test: echo "1 + 1" | calc.exe -o '# ' | grep -q '# 2'