/* 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;
}
// 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'