-
-/*
- * 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
#include <h/fmt_compile.h>
#include <h/mts.h>
#include <h/utils.h>
+#include "terminal.h"
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
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 */
t++;
}
- return (struct ftable *) 0;
+ return NULL;
}
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++) {
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, "^");
}
CERROR("component used as both date and address");
}
if (cm->c_tws) {
- memset (cm->c_tws, 0, sizeof *cm->c_tws);
+ ZERO(cm->c_tws);
} else {
NEW0(cm->c_tws);
}
case FT_GETMYMBOX:
case FT_GETMYADDR:
if (!primed) {
- ismymbox ((struct mailname *) 0);
+ ismymbox(NULL);
primed++;
}
- /* fall through */
+ /* FALLTHRU */
case FT_PARSEADDR:
if (cm->c_type & CT_DATE) {
CERROR("component used as both date and address");
}
case TF_NOW:
- LV(t->f_type, time((time_t *) 0));
+ LV(t->f_type, time(NULL));
break;
case TF_EXPR_SV:
LV(FT_SAVESTR, 0);
- /* fall through */
+ /* FALLTHRU */
case TF_EXPR:
*--cp = c;
cp = do_expr(cp, t->extra);
*
* 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.
unsigned int i;
struct comp *cm;
- for (i = 0; i < sizeof(wantcomp)/sizeof(wantcomp[0]); i++)
+ 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;
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;
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);
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);
}
}
else
comp = comp->c_next;
- while (comp == NULL && *bucket < sizeof(wantcomp)/sizeof(wantcomp[0])) {
+ while (comp == NULL && *bucket < DIM(wantcomp)) {
comp = wantcomp[(*bucket)++];
}
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;