X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/162f2a7d23a18a87cad101f68ab27de057de533d..a75b45f604c4e48b0f39be25ce59cd1955e5f9a4:/uip/fmtdump.c?ds=inline diff --git a/uip/fmtdump.c b/uip/fmtdump.c index 65663175..65358168 100644 --- a/uip/fmtdump.c +++ b/uip/fmtdump.c @@ -12,17 +12,19 @@ #include #include -static struct swit switches[] = { -#define FORMSW 0 - { "form formatfile", 0 }, -#define FMTSW 1 - { "format string", 5 }, -#define VERSIONSW 2 - { "version", 0 }, -#define HELPSW 3 - { "help", 0 }, - { NULL, 0 } -}; +#define FMTDUMP_SWITCHES \ + X("form formatfile", 0, FORMSW) \ + X("format string", 5, FMTSW) \ + X("version", 0, VERSIONSW) \ + X("help", 0, HELPSW) \ + +#define X(sw, minchars, id) id, +DEFINE_SWITCH_ENUM(FMTDUMP); +#undef X + +#define X(sw, minchars, id) { sw, minchars, id }, +DEFINE_SWITCH_ARRAY(FMTDUMP, switches); +#undef X /* for assignlabel */ static struct format *lvec[128]; @@ -72,10 +74,10 @@ main (int argc, char **argv) case HELPSW: snprintf (buf, sizeof(buf), "%s [switches]", invo_name); print_help (buf, switches, 1); - done (1); + done (0); case VERSIONSW: print_version(invo_name); - done (1); + done (0); case FORMSW: if (!(form = *argp++) || *form == '-') @@ -100,9 +102,12 @@ main (int argc, char **argv) * Get new format string. Must be before chdir(). */ nfs = new_fs (form, format, FORMAT); - (void) fmt_compile(nfs, &fmt); + (void) fmt_compile(nfs, &fmt, 1); fmt_dump(fmt); + + fmt_free(fmt, 1); + done(0); return 1; } @@ -355,6 +360,7 @@ f_typestr(int t) case FT_STRFW: return("STRFW"); case FT_PUTADDR: return("PUTADDR"); case FT_STRLIT: return("STRLIT"); + case FT_STRLITZ: return("STRLITZ"); case FT_LS_COMP: return("LS_COMP"); case FT_LS_LIT: return("LS_LIT"); case FT_LS_GETENV: return("LS_GETENV"); @@ -411,9 +417,6 @@ f_typestr(int t) case FT_FORMATADDR: return("FORMATADDR"); case FT_CONCATADDR: return("CONCATADDR"); case FT_MYMBOX: return("MYMBOX"); -#ifdef FT_ADDTOSEQ - case FT_ADDTOSEQ: return("ADDTOSEQ"); -#endif case FT_SAVESTR: return("SAVESTR"); #ifdef FT_PAUSE case FT_PAUSE: return ("PAUSE"); @@ -470,13 +473,14 @@ c_flagsstr(int t) static char buf[64]; buf[0] = '\0'; - if (t & ~(CF_TRUE|CF_PARSED|CF_DATEFAB)) + if (t & ~(CF_TRUE|CF_PARSED|CF_DATEFAB|CF_TRIMMED)) printf(buf, "0x%x ", t); strcat(buf, "<"); i = 0; FNORD(CF_TRUE, "TRUE"); FNORD(CF_PARSED, "PARSED"); FNORD(CF_DATEFAB, "DATEFAB"); + FNORD(CF_TRIMMED, "TRIMMED"); strcat(buf, ">"); return(buf); }