* complete copyright information.
*/
-#include <h/mh.h>
-#include <h/addrsbr.h>
-#include <h/fmt_scan.h>
-#include <h/utils.h>
-#include <sys/file.h> /* L_SET */
-
-extern short ccto; /* from repl.c */
-extern short cccc;
-extern short ccme;
-extern short querysw;
+#include "h/mh.h"
+#include "sbr/fmt_new.h"
+#include "sbr/m_name.h"
+#include "sbr/m_gmprot.h"
+#include "sbr/m_getfld.h"
+#include "sbr/read_switch.h"
+#include "sbr/concat.h"
+#include "sbr/uprf.h"
+#include "sbr/escape_addresses.h"
+#include "sbr/pidstatus.h"
+#include "sbr/arglist.h"
+#include "sbr/error.h"
+#include "h/addrsbr.h"
+#include "h/fmt_scan.h"
+#include "h/done.h"
+#include "h/utils.h"
+#include <sys/file.h>
+#include "replsbr.h"
+
+short ccto = -1;
+short cccc = -1;
+short ccme = -1;
+short querysw = 0;
static int dftype=0;
static char *dfhost = NULL;
static struct mailname mq;
-static int nodupcheck = 0; /* If set, no check for duplicates */
-
-/*
- * Buffer size for content part of header fields.
- * We want this to be large enough so that we don't
- * do a lot of extra FLDPLUS calls on m_getfld but
- * small enough so that we don't snarf the entire
- * message body when we're not going to use any of it.
- */
-#define SBUFSIZ NMH_BUFSIZ
+static bool nodupcheck; /* If set, no check for duplicates */
static char *addrcomps[] = {
"from",
{
int state, i;
struct comp *cptr;
- char tmpbuf[SBUFSIZ];
+ char tmpbuf[NMH_BUFSIZ];
struct format *fmt;
char **ap;
int char_read = 0, format_len, mask;
char name[NAMESZ], *cp;
charstring_t scanl;
static int dat[5]; /* aux. data for format routine */
- m_getfld_state_t gstate = 0;
+ m_getfld_state_t gstate;
struct fmt_callbacks cb;
FILE *out;
/*
* pick any interesting stuff out of msg "inb"
*/
+ gstate = m_getfld_state_init(inb);
for (;;) {
int msg_count = sizeof tmpbuf;
- state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
+ state = m_getfld2(&gstate, name, tmpbuf, &msg_count);
switch (state) {
case FLD:
case FLDPLUS:
char_read += msg_count;
while (state == FLDPLUS) {
msg_count= sizeof tmpbuf;
- state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
+ state = m_getfld2(&gstate, name, tmpbuf, &msg_count);
fmt_appendcomp(i, name, tmpbuf);
char_read += msg_count;
}
while (state == FLDPLUS) {
msg_count= sizeof tmpbuf;
- state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
+ state = m_getfld2(&gstate, name, tmpbuf, &msg_count);
}
break;
goto finished;
default:
- adios (NULL, "m_getfld() returned %d", state);
+ die("m_getfld2() returned %d", state);
}
}
/* set up the "fcc" pseudo-component */
cptr = fmt_findcomp ("fcc");
if (cptr) {
- mh_xfree(cptr->c_text);
+ free(cptr->c_text);
if (fcc)
cptr->c_text = mh_xstrdup(fcc);
else
}
cptr = fmt_findcomp ("user");
if (cptr) {
- mh_xfree(cptr->c_text);
+ free(cptr->c_text);
if ((cp = getenv("USER")))
cptr->c_text = mh_xstrdup(cp);
else
dat[2] = 0;
dat[3] = outputlinelen;
dat[4] = 0;
- memset(&cb, 0, sizeof(cb));
+ ZERO(&cb);
cb.formataddr = replformataddr;
cb.concataddr = replconcataddr;
fmt_scan (fmt, scanl, i, dat, &cb);
replformataddr (char *orig, char *str)
{
int len;
- char baddr[BUFSIZ], error[BUFSIZ];
- int isgroup;
+ char baddr[BUFSIZ+6], error[BUFSIZ];
+ bool isgroup;
char *dst;
char *cp;
char *sp;
}
/* concatenate all the new addresses onto 'buf' */
- for (isgroup = 0; (cp = getname (fixed_str)); ) {
+ for (isgroup = false; (cp = getname (fixed_str)); ) {
if ((mp = getm (cp, dfhost, dftype, error, sizeof(error))) == NULL) {
snprintf (baddr, sizeof(baddr), "\t%s -- %s\n", cp, error);
badaddrs = add (baddr, badaddrs);
}
if (isgroup && (mp->m_gname || !mp->m_ingrp)) {
*dst++ = ';';
- isgroup = 0;
+ isgroup = false;
}
if (insert (mp)) {
/* if we get here we're going to add an address */
if (mp->m_gname) {
CHECKMEM (mp->m_gname);
CPY (mp->m_gname);
- isgroup++;
+ isgroup = true;
}
sp = adrformat (mp);
CHECKMEM (sp);
*dst = '\0';
last_dst = dst;
- return (buf);
+ return buf;
}
{
char *cp;
- nodupcheck = 1;
+ nodupcheck = true;
cp = replformataddr(orig, str);
- nodupcheck = 0;
+ nodupcheck = false;
return cp;
}
return 0;
for (mp = &mq; mp->m_next; mp = mp->m_next) {
- if (!strcasecmp (np->m_host ? np->m_host : "",
- mp->m_next->m_host ? mp->m_next->m_host : "") &&
- !strcasecmp (np->m_mbox ? np->m_mbox : "",
- mp->m_next->m_mbox ? mp->m_next->m_mbox : ""))
+ if (!strcasecmp (FENDNULL(np->m_host),
+ FENDNULL(mp->m_next->m_host)) &&
+ !strcasecmp (FENDNULL(np->m_mbox),
+ FENDNULL(mp->m_next->m_mbox)))
return 0;
}
if (!ccme && ismymbox (np))
adios (filter, "unable to read");
rewind (in);
- lseek (fileno(in), (off_t) 0, SEEK_SET);
+ lseek(fileno(in), 0, SEEK_SET);
arglist = argsplit(mhlproc, &mhl, &argnum);
case OK:
dup2 (fileno (in), fileno (stdin));
dup2 (fileno (out), fileno (stdout));
- closefds (3);
/*
* We're not allocating the memory for the extra arguments,
write(2, "\n", 1) < 0) {
advise ("stderr", "write");
}
- _exit (-1);
+ _exit(1);
default:
if (pidXwait (pid, mhl))
done (1);
fseek (out, 0L, SEEK_END);
+ arglist_free(mhl, arglist);
break;
}
}
-static
-char *
-fix_addresses (char *str) {
+static char *
+fix_addresses (char *str)
+{
char *fixed_str = NULL;
- int fixed_address = 0;
+ bool fixed_address = false;
if (str) {
/*
adr = getname (new_adr);
if (adr != NULL &&
(mp = getm (adr, dfhost, dftype, NULL, 0)) != NULL) {
- fixed_address = 1;
+ fixed_address = true;
mnfree (mp);
}
free (angle_addr);