X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/fe89a5c2fd062e9893b1d9d22d909a6368c53217..b7345052cafdcd4bef23b1a1822675bc5659accf:/h/fmt_scan.h diff --git a/h/fmt_scan.h b/h/fmt_scan.h index db10c171..7e21479e 100644 --- a/h/fmt_scan.h +++ b/h/fmt_scan.h @@ -47,23 +47,6 @@ struct comp { extern int fmt_norm; -/* - * Hash function for component name. The function should be - * case independent and probably shouldn't involve a routine - * call. This function is pretty good but will not work on - * single character component names. - */ -#define CHASH(nm) (((((nm)[0]) - ((nm)[1])) & 0x1f) + (((nm)[2]) & 0x5f)) - -/* - * Find a component in the hash table. - */ -#define FINDCOMP(comp,name) \ - for (comp = wantcomp[CHASH(name)]; \ - comp && strcmp(comp->c_name,name); \ - comp = comp->c_next) \ - ; - /* * This structure defines one formatting instruction. */ @@ -77,6 +60,7 @@ struct format { char f_u_char; /* literal character */ int f_u_value; /* literal value */ } f_un; + short f_flags; /* misc. flags */ }; #define f_skip f_width /* instr to skip (false "if") */ @@ -86,6 +70,13 @@ struct format { #define f_char f_un.f_u_char #define f_value f_un.f_u_value +/* + * f_flags bits + */ + +#define FF_STRALLOC (1<<0) /* String has been allocated */ +#define FF_COMPREF (1<<1) /* Component reference */ + /* * prototypes used by the format engine */ @@ -120,7 +111,8 @@ char *new_fs (char *form, char *format, char *default_fs); * strings that you want to compile and operate on the * same message, this should be set to false. * - * Returns the number of components referenced by the format instructions. + * Returns the total number of components referenced by all format instructions + * since the last reset of the hash table. */ int fmt_compile (char *fstring, struct format **fmt, int reset);