static void ExecTable(char *param) { char *t; VERBOSE(1, ("ExecTable(%s)\n", param)); if (FltOptions('c')) { t = skip_ident(param); if (*skip_blanks(t) == '\0') { int save = *t; *t = 0; if (*param) { flt_make_symtab(param); flt_read_keywords(MY_NAME); } else { set_symbol_table(default_table); } *t = (char) save; } } t = skip_ident(param); flt_puts(param, (int) (t - param), Literal_attr); if (*skip_blanks(t) == '\0') { flt_puts(t, (int) strlen(t), ""); } else { flt_error("unexpected tokens"); flt_puts(t, (int) strlen(t), Error_attr); } }
void flt_bfr_error(void) { if (flt_bfr_used) { flt_error("unterminated buffer"); flt_bfr_attr = class_attr(NAME_ERROR); flt_bfr_finish(); } }
static int parse_directive(char *line) { /* *INDENT-OFF* */ static struct { const char *name; void (*func) (char *); } table[] = { { "abbrev", ExecAbbrev }, { "brief", ExecBrief }, { "class", ExecClass }, { "default", ExecDefault }, { "equals", ExecEquals }, { "include", ExecInclude }, { "merge", ExecSource }, { "meta", ExecMeta }, { "source", ExecSource }, { "table", ExecTable }, }; /* *INDENT-ON* */ unsigned n, len; char *s; VERBOSE(1, ("parse_directive(%s)\n", line)); if (*(s = skip_blanks(line)) == meta_ch) { s = skip_blanks(s + 1); if ((len = (unsigned) (skip_ident(s) - s)) != 0) { for (n = 0; n < sizeof(table) / sizeof(table[0]); n++) { if (!strncmp(s, table[n].name, len)) { flt_puts(line, (int) (s + len - line), Ident_attr); s = flt_put_blanks(s + len); (*table[n].func) (s); return 1; } } } flt_error("unknown directive"); flt_puts(line, (int) strlen(line), Error_attr); } return 0; }