X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Ffmt_compile.c;h=014733427dcd6261cded324b744e0cac125cdc7b;hb=bdddaaec97b85b1e4a23272431076c538afa11c0;hp=6583195866dc9a55f8149cae84c17a74663cadc1;hpb=9352a1d118cf72bfcfaae8a6f8bce7692c136149;p=mmh diff --git a/sbr/fmt_compile.c b/sbr/fmt_compile.c index 6583195..0147334 100644 --- a/sbr/fmt_compile.c +++ b/sbr/fmt_compile.c @@ -264,7 +264,7 @@ static struct ftable functable[] = { } while (0) #define LV(type, value) do { NEW(type,0,0); fp->f_value = (value); } while (0) -#define LS(type, str) do { NEW(type,0,0); fp->f_text = (str); fp->f_flags |= FF_STRALLOC; } while (0) +#define LS(type, str) do { NEW(type,0,0); fp->f_text = getcpy(str); fp->f_flags |= FF_STRALLOC; } while (0) #define PUTCOMP(comp) do { NEW(FT_COMP,0,0); ADDC(comp); } while (0) #define PUTLIT(str) do { NEW(FT_LIT,0,0); fp->f_text = getcpy(str); fp->f_flags |= FF_STRALLOC; } while (0) @@ -873,6 +873,53 @@ fmt_findcomp(char *component) } /* + * Like fmt_findcomp, but case-insensitive. + */ + +struct comp * +fmt_findcasecomp(char *component) +{ + struct comp *cm; + + for (cm = wantcomp[CHASH(component)]; cm; cm = cm->c_next) + if (mh_strcasecmp(component, cm->c_name) == 0) + break; + + return cm; +} + +/* + * Add an entry to the component hash table + * + * Returns true if the component was added, 0 if it already existed. + * + */ + +int +fmt_addcompentry(char *component) +{ + struct comp *cm; + int i; + + FINDCOMP(cm, component); + + if (cm) + return 0; + + NEWCOMP(cm, component); + + /* + * ncomp is really meant for fmt_compile() and this function is + * meant to be used outside of it. So decrement it just to be safe + * (internal callers should be using NEWCOMP()). + */ + + ncomp--; + + return 1; +} + +/* * Add a string to a component hash table entry. * * Note the special handling for components marked with CT_ADDR. The comments @@ -880,7 +927,7 @@ fmt_findcomp(char *component) */ int -fmt_addcomp(char *component, char *text) +fmt_addcomptext(char *component, char *text) { int i, found = 0, bucket = CHASH(component); struct comp *cptr = wantcomp[bucket]; @@ -934,7 +981,7 @@ fmt_appendcomp(int bucket, char *component, char *text) static void free_comptable(void) { - int i; + unsigned int i; struct comp *cm, *cm2; for (i = 0; i < sizeof(wantcomp)/sizeof(wantcomp[0]); i++) {