* complete copyright information.
*/
-#include <h/mh.h>
-#include <h/tws.h>
-#include <h/picksbr.h>
-#include <h/utils.h>
+#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 <sys/time.h>
#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 */
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,
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);
}
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
--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;
}
/* 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;
}
do {
lp--;
if (advance ((char *) lp, (char *) ep))
- return (1);
+ return 1;
} while (lp > curlp);
return 0;
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;
}
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;
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;
}
state = n->n_after ? (twsort (tw, &n->n_tws) > 0)
: (twsort (tw, &n->n_tws) < 0);
- mh_xfree(bp);
+ free(bp);
return state;
}