X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/c6f2d14d9c38345075629af3487c2de491584ca1..a3724ed39:/sbr/fmt_compile.c?ds=inline diff --git a/sbr/fmt_compile.c b/sbr/fmt_compile.c index 4f60cebb..5a4e4b8b 100644 --- a/sbr/fmt_compile.c +++ b/sbr/fmt_compile.c @@ -1,6 +1,4 @@ - -/* - * fmt_compile.c -- "compile" format strings for fmt_scan +/* fmt_compile.c -- "compile" format strings for fmt_scan * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for @@ -290,7 +288,7 @@ static struct colormap colortable[] = { /* Add new component to the hash table */ #define NEWCOMP(cm,name) do { \ NEW0(cm);\ - cm->c_name = getcpy(name);\ + cm->c_name = mh_xstrdup(name);\ cm->c_refcount++;\ ncomp++;\ i = CHASH(name);\ @@ -298,9 +296,8 @@ static struct colormap colortable[] = { wantcomp[i] = cm; \ } while (0) -#define NEWFMT (next_fp++) #define NEW_FP(type,fill,wid) do {\ - fp=NEWFMT; fp->f_type=(type); fp->f_fill=(fill); fp->f_width=(wid); \ + fp=next_fp++; fp->f_type=(type); fp->f_fill=(fill); fp->f_width=(wid); \ } while (0) /* Add (possibly new) component to the hash table */ @@ -367,7 +364,7 @@ compile_error(char *str, char *cp) int i, errpos, errctx; errpos = cp - format_string; - errctx = errpos > 20 ? 20 : errpos; + errctx = min(errpos, 20); usr_fstring[errpos] = '\0'; for (i = errpos-errctx; i < errpos; i++) { @@ -375,7 +372,7 @@ compile_error(char *str, char *cp) usr_fstring[i] = '_'; } - advise(NULL, "\"%s\": format compile error - %s", + inform("\"%s\": format compile error - %s", &usr_fstring[errpos-errctx], str); adios (NULL, "%*s", errctx+1, "^"); } @@ -393,7 +390,7 @@ fmt_compile(char *fstring, struct format **fmt, int reset_comptable) size_t i; static int comptable_initialized = 0; - format_string = getcpy (fstring); + format_string = mh_xstrdup(fstring); usr_fstring = fstring; if (reset_comptable || !comptable_initialized) { @@ -578,7 +575,7 @@ do_name(char *sp, int preprocess) ismymbox ((struct mailname *) 0); primed++; } - /* fall through */ + /* FALLTHRU */ case FT_PARSEADDR: if (cm->c_type & CT_DATE) { CERROR("component used as both date and address"); @@ -740,7 +737,7 @@ do_func(char *sp) case TF_EXPR_SV: LV(FT_SAVESTR, 0); - /* fall through */ + /* FALLTHRU */ case TF_EXPR: *--cp = c; cp = do_expr(cp, t->extra); @@ -799,7 +796,7 @@ do_expr (char *sp, int preprocess) * * Okay, got some more information on this from John L. Romine! From an * email he sent to the nmh-workers mailing list on December 2, 2010, he - * explains it thusly: + * explains it so: * * In this case (scan, formatsbr) it has to do with an extension to * the mh-format syntax to allow for looping. @@ -968,12 +965,11 @@ fmt_freecomptext(void) unsigned int i; struct comp *cm; - for (i = 0; i < sizeof(wantcomp)/sizeof(wantcomp[0]); i++) - for (cm = wantcomp[i]; cm; cm = cm->c_next) - if (cm->c_text) { - free(cm->c_text); - cm->c_text = NULL; - } + for (i = 0; i < DIM(wantcomp); i++) + for (cm = wantcomp[i]; cm; cm = cm->c_next) { + mh_xfree(cm->c_text); + cm->c_text = NULL; + } } /* @@ -1001,7 +997,7 @@ fmt_findcasecomp(char *component) struct comp *cm; for (cm = wantcomp[CHASH(component)]; cm; cm = cm->c_next) - if (strcasecmp(component, cm->c_name ? cm->c_name : "") == 0) + if (strcasecmp(component, FENDNULL(cm->c_name)) == 0) break; return cm; @@ -1053,7 +1049,7 @@ fmt_addcomptext(char *component, char *text) char *cp; while (cptr) { - if (strcasecmp(component, cptr->c_name ? cptr->c_name : "") == 0) { + if (strcasecmp(component, FENDNULL(cptr->c_name)) == 0) { found++; if (! cptr->c_text) { cptr->c_text = getcpy(text); @@ -1088,7 +1084,7 @@ fmt_appendcomp(int bucket, char *component, char *text) if (bucket != -1) { for (cptr = wantcomp[bucket]; cptr; cptr = cptr->c_next) - if (strcasecmp(component, cptr->c_name ? cptr->c_name : "") == 0) + if (strcasecmp(component, FENDNULL(cptr->c_name)) == 0) cptr->c_text = add(text, cptr->c_text); } } @@ -1105,7 +1101,7 @@ fmt_nextcomp(struct comp *comp, unsigned int *bucket) else comp = comp->c_next; - while (comp == NULL && *bucket < sizeof(wantcomp)/sizeof(wantcomp[0])) { + while (comp == NULL && *bucket < DIM(wantcomp)) { comp = wantcomp[(*bucket)++]; } @@ -1122,7 +1118,7 @@ free_comptable(void) unsigned int i; struct comp *cm, *cm2; - for (i = 0; i < sizeof(wantcomp)/sizeof(wantcomp[0]); i++) { + for (i = 0; i < DIM(wantcomp); i++) { cm = wantcomp[i]; while (cm != NULL) { cm2 = cm->c_next; @@ -1145,10 +1141,8 @@ free_component(struct comp *cm) { if (--cm->c_refcount <= 0) { /* Shouldn't ever be NULL, but just in case ... */ - if (cm->c_name) - free(cm->c_name); - if (cm->c_text) - free(cm->c_text); + mh_xfree(cm->c_name); + mh_xfree(cm->c_text); if (cm->c_type & CT_DATE) free(cm->c_tws); if (cm->c_type & CT_ADDR && cm->c_mn && cm->c_mn != &fmt_mnull)