X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/afee8ed17a56617618fb7f963b111d7cf0fb56e7..9322ba2854211794c27fae9468768b80b767c211:/uip/picksbr.c diff --git a/uip/picksbr.c b/uip/picksbr.c index c572cde0..6faa108f 100644 --- a/uip/picksbr.c +++ b/uip/picksbr.c @@ -157,7 +157,6 @@ struct nexus { #define n_tws un.st3.un_tws static int talked; -static int pdebug = 0; static char *datesw; static char **argp; @@ -195,11 +194,6 @@ static int TWSaction(); int pcompile (char **vec, char *date) { - register char *cp; - - if ((cp = getenv ("MHPDEBUG")) && *cp) - pdebug++; - argp = vec; if ((datesw = date) == NULL) datesw = "date"; @@ -220,8 +214,8 @@ pcompile (char **vec, char *date) static struct nexus * parse (void) { - register char *cp; - register struct nexus *n, *o; + char *cp; + struct nexus *n, *o; if ((n = nexp1 ()) == NULL || (cp = nxtarg ()) == NULL) return n; @@ -249,6 +243,7 @@ parse (void) if ((o->n_R_child = parse ())) return o; padvise (NULL, "missing disjunctive"); + free (o); return NULL; header: ; @@ -261,14 +256,15 @@ header: ; static struct nexus * nexp1 (void) { - register char *cp; - register struct nexus *n, *o; + char *cp; + struct nexus *n, *o; if ((n = nexp2 ()) == NULL || (cp = nxtarg ()) == NULL) return n; if (*cp != '-') { padvise (NULL, "%s unexpected", cp); + free (n); return NULL; } @@ -278,10 +274,12 @@ nexp1 (void) case AMBIGSW: ambigsw (cp, parswit); talked++; + free (n); return NULL; case UNKWNSW: fprintf (stderr, "-%s unknown\n", cp); talked++; + free (n); return NULL; case PRAND: @@ -290,6 +288,7 @@ nexp1 (void) if ((o->n_R_child = nexp1 ())) return o; padvise (NULL, "missing conjunctive"); + free (o); return NULL; header: ; @@ -303,8 +302,8 @@ header: ; static struct nexus * nexp2 (void) { - register char *cp; - register struct nexus *n; + char *cp; + struct nexus *n; if ((cp = nxtarg ()) == NULL) return NULL; @@ -331,6 +330,7 @@ nexp2 (void) if ((n->n_L_child = nexp3 ())) return n; padvise (NULL, "missing negation"); + free (n); return NULL; header: ; @@ -344,9 +344,9 @@ static struct nexus * nexp3 (void) { int i; - register char *cp, *dp; + char *cp, *dp; char buffer[BUFSIZ], temp[64]; - register struct nexus *n; + struct nexus *n; if ((cp = nxtarg ()) == NULL) return NULL; @@ -412,15 +412,17 @@ nexp3 (void) n->n_header = 0; if (!(cp = nxtarg ())) {/* allow -xyz arguments */ padvise (NULL, "missing argument to %s", argp[-2]); + free (n); return NULL; } dp = cp; pattern: ; if (!gcompile (n, dp)) { padvise (NULL, "pattern error in %s %s", argp[-2], cp); + free (n); return NULL; } - n->n_patbuf = getcpy (dp); + n->n_patbuf = mh_xstrdup(dp); return n; case PROTHR: @@ -444,6 +446,7 @@ nexp3 (void) n->n_datef = datesw; if (!tcompile (cp, &n->n_tws, n->n_after = i == PRAFTR)) { padvise (NULL, "unable to parse %s %s", argp[-2], cp); + free (n); return NULL; } return n; @@ -454,11 +457,9 @@ nexp3 (void) static struct nexus * newnexus (int (*action)()) { - register struct nexus *p; - - if ((p = (struct nexus *) calloc ((size_t) 1, sizeof *p)) == NULL) - adios (NULL, "unable to allocate component storage"); + struct nexus *p; + NEW0(p); p->n_action = action; return p; } @@ -467,19 +468,19 @@ newnexus (int (*action)()) #define args(a) a, fp, msgnum, start, stop #define params args (n) #define plist \ - register struct nexus *n; \ - register FILE *fp; \ + struct nexus *n; \ + FILE *fp; \ int msgnum; \ long start, \ stop; int -pmatches (FILE *fp, int msgnum, long start, long stop) +pmatches (FILE *fp, int msgnum, long start, long stop, int debug) { if (!head) return 1; - if (!talked++ && pdebug) + if (!talked++ && debug) PRaction (head, 0); return (*head->n_action) (args (head)); @@ -489,7 +490,7 @@ pmatches (FILE *fp, int msgnum, long start, long stop) static void PRaction (struct nexus *n, int level) { - register int i; + int i; for (i = 0; i < level; i++) fprintf (stderr, "| "); @@ -558,12 +559,12 @@ plist static int gcompile (struct nexus *n, char *astr) { - register int c; + int c; int cclcnt; - register unsigned char *ep, *dp, *sp, *lastep = 0; + unsigned char *ep, *dp, *sp, *lastep = 0; - dp = (ep = n->n_expbuf) + sizeof n->n_expbuf; - sp = astr; + dp = (ep = (unsigned char *) n->n_expbuf) + sizeof n->n_expbuf; + sp = (unsigned char *) astr; if (*sp == '^') { n->n_circf = 1; sp++; @@ -632,6 +633,7 @@ gcompile (struct nexus *n, char *astr) case '\\': if ((c = *sp++) == '\0') goto cerror; + /* FALLTHRU */ defchar: default: *ep++ = CCHR; @@ -650,7 +652,7 @@ plist { int c, body, lf; long pos = start; - register char *p1, *p2, *ebp, *cbp; + char *p1, *p2, *ebp, *cbp; char ibuf[BUFSIZ]; NMH_UNUSED (msgnum); @@ -740,7 +742,7 @@ plist static int advance (char *alp, char *aep) { - register unsigned char *lp, *ep, *curlp; + unsigned char *lp, *ep, *curlp; lp = (unsigned char *)alp; ep = (unsigned char *)aep; @@ -802,7 +804,7 @@ advance (char *alp, char *aep) star: do { lp--; - if (advance (lp, ep)) + if (advance ((char *) lp, (char *) ep)) return (1); } while (lp > curlp); return 0; @@ -817,8 +819,8 @@ advance (char *alp, char *aep) static int cclass (unsigned char *aset, int ac, int af) { - register unsigned int n; - register unsigned char c, *set; + unsigned int n; + unsigned char c, *set; set = aset; if ((c = ac) == 0) @@ -836,7 +838,7 @@ cclass (unsigned char *aset, int ac, int af) static int tcompile (char *ap, struct tws *tb, int isafter) { - register struct tws *tw; + struct tws *tw; if ((tw = tws_parse (ap, isafter)) == NULL) return 0; @@ -850,7 +852,7 @@ static struct tws * tws_parse (char *ap, int isafter) { char buffer[BUFSIZ]; - register struct tws *tw, *ts; + struct tws *tw, *ts; if ((tw = tws_special (ap)) != NULL) { tw->tw_sec = tw->tw_min = isafter ? 59 : 0; @@ -892,22 +894,22 @@ tws_special (char *ap) { int i; time_t clock; - register struct tws *tw; + struct tws *tw; time (&clock); - if (!mh_strcasecmp (ap, "today")) + if (!strcasecmp (ap, "today")) return dlocaltime (&clock); - if (!mh_strcasecmp (ap, "yesterday")) { + if (!strcasecmp (ap, "yesterday")) { clock -= (long) (60 * 60 * 24); return dlocaltime (&clock); } - if (!mh_strcasecmp (ap, "tomorrow")) { + if (!strcasecmp (ap, "tomorrow")) { clock += (long) (60 * 60 * 24); return dlocaltime (&clock); } for (i = 0; tw_ldotw[i]; i++) - if (!mh_strcasecmp (ap, tw_ldotw[i])) + if (!strcasecmp (ap, tw_ldotw[i])) break; if (tw_ldotw[i]) { if ((tw = dlocaltime (&clock)) == NULL) @@ -915,11 +917,12 @@ tws_special (char *ap) if ((i -= tw->tw_wday) > 0) i -= 7; } - else + else { if (*ap != '-') return NULL; - else /* -ddd days ago */ - i = atoi (ap); /* we should error check this */ + /* -ddd days ago */ + i = atoi (ap); /* we should error check this */ + } clock += (long) ((60 * 60 * 24) * i); return dlocaltime (&clock); @@ -931,9 +934,9 @@ TWSaction (params) plist { int state; - register char *bp; + char *bp; char buf[BUFSIZ], name[NAMESZ]; - register struct tws *tw; + struct tws *tw; m_getfld_state_t gstate = 0; NMH_UNUSED (stop); @@ -943,15 +946,14 @@ plist switch (state = m_getfld (&gstate, name, buf, &bufsz, fp)) { case FLD: case FLDPLUS: - if (bp != NULL) - free (bp), bp = NULL; - bp = add (buf, NULL); + mh_xfree(bp); + bp = mh_xstrdup(buf); while (state == FLDPLUS) { bufsz = sizeof buf; state = m_getfld (&gstate, name, buf, &bufsz, fp); bp = add (buf, bp); } - if (!mh_strcasecmp (name, n->n_datef)) + if (!strcasecmp (name, n->n_datef)) break; continue; @@ -961,8 +963,7 @@ plist case FMTERR: if (state == LENERR || state == FMTERR) advise (NULL, "format error in message %d", msgnum); - if (bp != NULL) - free (bp); + mh_xfree(bp); return 0; default: @@ -979,7 +980,6 @@ plist state = n->n_after ? (twsort (tw, &n->n_tws) > 0) : (twsort (tw, &n->n_tws) < 0); - if (bp != NULL) - free (bp); + mh_xfree(bp); return state; }