#include <h/fmt_scan.h>
#include <h/tws.h>
#include <h/utils.h>
+#include "../sbr/m_popen.h"
#include <setjmp.h>
#include <sys/types.h>
* set, then addresses get split wrong (not at the spaces between commas).
* To fix this correctly, putstr() should know about "atomic" strings that
* must NOT be broken across lines. That's too difficult for right now
- * (it turns out that there are a number of degernate cases), so in
+ * (it turns out that there are a number of degenerate cases), so in
* oneline(), instead of
*
* (*onelp == '\n' && !onelp[1])
"\n----------------------------------------------------------------------\n\n";
static char delim4[] = "\n------------------------------\n\n";
-static FILE *(*mhl_action) () = (FILE *(*) ()) 0;
+static FILE *(*mhl_action)(char *);
/*
* prototypes
static void quitser (int);
static void mhladios (char *, char *, ...);
static void mhldone (int);
-static void filterbody (struct mcomp *, char *, int, int, FILE *,
+static void filterbody (struct mcomp *, char *, int, int,
m_getfld_state_t);
static void compile_formatfield(struct mcomp *);
static void compile_filterargs (void);
continue;
case BITSTUFFSW:
- dashstuff = 1; /* trinary logic */
+ dashstuff = 1; /* ternary logic */
continue;
case NBITSTUFFSW:
- dashstuff = -1; /* trinary logic */
+ dashstuff = -1; /* ternary logic */
continue;
case NBODYSW:
}
else
printf ("\n------- End of Forwarded Message%s\n",
- vecp > 1 ? "s" : "");
+ PLURALS(vecp));
}
fflush(stdout);
c1->c_nfs = mh_xstrdup(global.c_nfs);
compile_formatfield(c1);
}
- }
- else
- if (c1->c_flags & ADDRFMT) {
- if (global.c_flags & ADDRFMT) {
- c1->c_nfs = mh_xstrdup(global.c_nfs);
- compile_formatfield(c1);
- }
- }
+ } else if (c1->c_flags & ADDRFMT) {
+ if (global.c_flags & ADDRFMT) {
+ c1->c_nfs = mh_xstrdup(global.c_nfs);
+ compile_formatfield(c1);
+ }
+ }
}
continue;
for (cp = result; *parptr && (cp - result < NAMESZ); parptr++) {
c = *parptr;
- if (isalnum (c)
- || c == '.'
- || c == '-'
- || c == '_'
- || c =='['
- || c == ']')
- *cp++ = c;
- else
+ if (!isalnum (c)
+ && c != '.'
+ && c != '-'
+ && c != '_'
+ && c !='['
+ && c != ']')
break;
+ *cp++ = c;
}
*cp = '\0';
{
int state, bucket;
struct mcomp *c1, *c2, *c3;
- char **ip, name[NAMESZ], buf[BUFSIZ];
- m_getfld_state_t gstate = 0;
+ char **ip, name[NAMESZ], buf[NMH_BUFSIZ];
+ m_getfld_state_t gstate;
compile_filterargs();
else {
printf ("\n-------");
if (ofilen == 1)
- printf (" Forwarded Message%s", ofilec > 1 ? "s" : "");
+ printf (" Forwarded Message%s", PLURALS(ofilec));
else
printf (" Message %d", ofilen);
printf ("\n\n");
}
}
+ gstate = m_getfld_state_init(fp);
for (;;) {
int bufsz = sizeof buf;
- switch (state = m_getfld (&gstate, name, buf, &bufsz, fp)) {
+ switch (state = m_getfld2(&gstate, name, buf, &bufsz)) {
case FLD:
case FLDPLUS:
bucket = fmt_addcomptext(name, buf);
if (!strcasecmp (name, *ip)) {
while (state == FLDPLUS) {
bufsz = sizeof buf;
- state = m_getfld (&gstate, name, buf, &bufsz, fp);
+ state = m_getfld2(&gstate, name, buf, &bufsz);
fmt_appendcomp(bucket, name, buf);
}
break;
continue;
for (c2 = fmthd; c2; c2 = c2->c_next)
- if (!strcasecmp (c2->c_name ? c2->c_name : "", name))
+ if (!strcasecmp (FENDNULL(c2->c_name), name))
break;
c1 = NULL;
if (!((c3 = c2 ? c2 : &global)->c_flags & SPLIT))
for (c1 = msghd; c1; c1 = c1->c_next)
- if (!strcasecmp (c1->c_name ? c1->c_name : "",
- c3->c_name ? c3->c_name : "")) {
+ if (!strcasecmp (FENDNULL(c1->c_name),
+ FENDNULL(c3->c_name))) {
c1->c_text =
mcomp_add (c1->c_flags, buf, c1->c_text);
break;
c1 = add_queue (&msghd, &msgtl, name, buf, 0);
while (state == FLDPLUS) {
bufsz = sizeof buf;
- state = m_getfld (&gstate, name, buf, &bufsz, fp);
+ state = m_getfld2(&gstate, name, buf, &bufsz);
c1->c_text = add (buf, c1->c_text);
fmt_appendcomp(bucket, name, buf);
}
!strcasecmp (c1->c_name, "body"))) {
if (c1->c_flags & FMTFILTER && state == BODY &&
formatproc != NULL) {
- filterbody(c1, buf, sizeof(buf), state, fp, gstate);
+ filterbody(c1, buf, sizeof(buf), state, gstate);
} else {
holder.c_text = mh_xmalloc (sizeof(buf));
strncpy (holder.c_text, buf, sizeof(buf));
while (state == BODY) {
putcomp (c1, &holder, BODYCOMP);
bufsz = sizeof buf;
- state = m_getfld (&gstate, name, holder.c_text,
- &bufsz, fp);
+ state = m_getfld2(&gstate, name, holder.c_text,
+ &bufsz);
}
free (holder.c_text);
holder.c_text = NULL;
continue;
}
for (c2 = msghd; c2; c2 = c2->c_next)
- if (!strcasecmp (c2->c_name ? c2->c_name : "",
- c1->c_name ? c1->c_name : "")) {
+ if (!strcasecmp (FENDNULL(c2->c_name),
+ FENDNULL(c1->c_name))) {
putcomp (c1, c2, ONECOMP);
if (!(c1->c_flags & SPLIT))
break;
*onelp++ = 0;
break;
}
- else
- if (!spc) {
- *cp++ = ' ';
- spc++;
- }
+ if (!spc) {
+ *cp++ = ' ';
+ spc++;
+ }
}
else {
*cp++ = *onelp;
putch ('\n', flags);
if (ovoff > 0)
lm = ovoff;
- putstr (ovtxt ? ovtxt : "", flags);
+ putstr (FENDNULL(ovtxt), flags);
putch (ch, flags);
return;
}
*/
static void
-filterbody (struct mcomp *c1, char *buf, int bufsz, int state, FILE *fp,
- m_getfld_state_t gstate)
+filterbody (struct mcomp *c1, char *buf, int bufsz, int state,
+ m_getfld_state_t gstate)
{
struct mcomp holder;
char name[NAMESZ];
close(fdoutput[1]);
/*
- * Call m_getfld() until we're no longer in the BODY state
+ * Call m_getfld2() until we're no longer in the BODY state
*/
while (state == BODY) {
if (write(fdinput[1], buf, strlen(buf)) < 0) {
advise ("pipe output", "write");
}
- state = m_getfld (&gstate, name, buf, &bufsz2, fp);
+ state = m_getfld2(&gstate, name, buf, &bufsz2);
}
/*