#include <h/fmt_compile.h>
#include <h/scansbr.h>
-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];
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 == '-')
* 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;
}
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");
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");