X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/ec18722d02bd307bd09f30715dc8ba4e1b8a6716..0b7286788a95dd854d1826b8493eda431d8e8aac:/uip/picksbr.c diff --git a/uip/picksbr.c b/uip/picksbr.c index 3f8a17c2..346dcc70 100644 --- a/uip/picksbr.c +++ b/uip/picksbr.c @@ -5,10 +5,13 @@ * complete copyright information. */ -#include -#include -#include -#include +#include "h/mh.h" +#include "sbr/brkstring.h" +#include "sbr/ambigsw.h" +#include "sbr/error.h" +#include "h/tws.h" +#include "h/picksbr.h" +#include "h/utils.h" #ifdef HAVE_SYS_TIME_H # include @@ -116,7 +119,7 @@ static unsigned char cc[] = { #define pinform if (!talked++) inform struct nexus { - int (*n_action)(); + int (*n_action)(struct nexus *n, FILE *fp, int msgnum, long start, long stop); union { /* for {OR,AND,NOT}action */ @@ -180,7 +183,7 @@ static struct nexus *parse(void); static struct nexus *nexp1(void); static struct nexus *nexp2(void); static struct nexus *nexp3(void); -static struct nexus *newnexus(int (*)(struct nexus *n, +static struct nexus *newnexus(int (*action)(struct nexus *n, FILE *fp, int msgnum, long start, long stop)); static int ORaction(struct nexus *n, FILE *fp, int msgnum, @@ -519,8 +522,10 @@ PRaction (struct nexus *n, int level) dasctime (&n->n_tws, TW_NULL)); return; } - fprintf (stderr, "UNKNOWN(0x%x)\n", - (unsigned int)(unsigned long) (*n->n_action)); + + generic_pointer gp; + gp.f = (void (*)(void))n->n_action; + fprintf(stderr, "UNKNOWN(%p)\n", gp.v); } @@ -642,21 +647,23 @@ cerror: ; static int GREPaction(struct nexus *n, FILE *fp, int msgnum, long start, long stop) { - int c, body, lf; + int c; + bool body; + bool lf; long pos = start; char *p1, *p2, *ebp, *cbp; char ibuf[BUFSIZ]; NMH_UNUSED (msgnum); fseek (fp, start, SEEK_SET); - body = 0; + body = false; ebp = cbp = ibuf; for (;;) { if (body && n->n_header) return 0; p1 = linebuf; p2 = cbp; - lf = 0; + lf = false; for (;;) { if (p2 >= ebp) { if (fgets (ibuf, sizeof ibuf, fp) == NULL @@ -675,16 +682,16 @@ GREPaction(struct nexus *n, FILE *fp, int msgnum, long start, long stop) --p2; break; } - lf = 0; + lf = false; } if (c == '\n') { if (body) break; if (lf) { - body++; + body = true; break; } - lf++; + lf = true; /* Unfold by skipping the newline. */ c = 0; } @@ -699,7 +706,7 @@ GREPaction(struct nexus *n, FILE *fp, int msgnum, long start, long stop) /* Attempt to decode as a MIME header. If it's the last header, body will be 1 and lf will be at least 1. */ - if ((body == 0 || lf > 0) && + if ((!body || lf) && decode_rfc2047 (linebuf, decoded_linebuf, sizeof decoded_linebuf)) { p1 = decoded_linebuf; } @@ -794,7 +801,7 @@ advance (char *alp, char *aep) do { lp--; if (advance ((char *) lp, (char *) ep)) - return (1); + return 1; } while (lp > curlp); return 0; @@ -813,14 +820,14 @@ cclass (unsigned char *aset, int ac, int af) set = aset; if ((c = ac) == 0) - return (0); + return 0; n = *set++; while (n--) if (*set++ == c || set[-1] == cc[c]) - return (af); + return af; - return (!af); + return !af; } @@ -935,7 +942,7 @@ TWSaction(struct nexus *n, FILE *fp, int msgnum, long start, long stop) switch (state = m_getfld2(&gstate, name, buf, &bufsz)) { case FLD: case FLDPLUS: - mh_xfree(bp); + free(bp); bp = mh_xstrdup(buf); while (state == FLDPLUS) { bufsz = sizeof buf; @@ -952,11 +959,11 @@ TWSaction(struct nexus *n, FILE *fp, int msgnum, long start, long stop) case FMTERR: if (state == LENERR || state == FMTERR) inform("format error in message %d", msgnum); - mh_xfree(bp); + free(bp); return 0; default: - adios (NULL, "internal error -- you lose"); + die("internal error -- you lose"); } break; } @@ -969,6 +976,6 @@ TWSaction(struct nexus *n, FILE *fp, int msgnum, long start, long stop) state = n->n_after ? (twsort (tw, &n->n_tws) > 0) : (twsort (tw, &n->n_tws) < 0); - mh_xfree(bp); + free(bp); return state; }