-
-/*
- * replsbr.c -- routines to help repl along...
+/* replsbr.c -- routines to help repl along...
*
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
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 256
-
static char *addrcomps[] = {
"from",
"sender",
{
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;
if (cptr)
cptr->c_name = mh_xstrdup("");
}
- /* set up the "fcc" pseudo-component */
- if (fcc) {
- cptr = fmt_findcomp ("fcc");
- if (cptr)
- cptr->c_text = mh_xstrdup(fcc);
- }
- if ((cp = getenv("USER"))) {
- cptr = fmt_findcomp ("user");
- if (cptr)
- cptr->c_text = mh_xstrdup(cp);
- }
if (!ccme)
ismymbox (NULL);
finished:
m_getfld_state_destroy (&gstate);
+ /* set up the "fcc" pseudo-component */
+ cptr = fmt_findcomp ("fcc");
+ if (cptr) {
+ mh_xfree(cptr->c_text);
+ if (fcc)
+ cptr->c_text = mh_xstrdup(fcc);
+ else
+ cptr->c_text = NULL;
+ }
+ cptr = fmt_findcomp ("user");
+ if (cptr) {
+ mh_xfree(cptr->c_text);
+ if ((cp = getenv("USER")))
+ cptr->c_text = mh_xstrdup(cp);
+ else
+ cptr = NULL;
+ }
+
/*
* if there's a "Subject" component, strip any "Re:"s off it
*/
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);
struct mailname *mp;
NEW(adr_nodep);
- adr_nodep->adr = strdup (cp);
+ adr_nodep->adr = mh_xstrdup (cp);
adr_nodep->escape_local_part = 0;
adr_nodep->fixed = 0;
adr_nodep->next = NULL;
* Walk the list and try to fix broken addresses.
*/
for (np = adrs; np; np = np->next) {
- char *display_name = strdup (np->adr);
+ char *display_name = mh_xstrdup (np->adr);
size_t len = strlen (display_name);
if (np->escape_local_part) {
char *local_part_end = strrchr (display_name, '<');
- char *angle_addr = strdup (local_part_end);
+ char *angle_addr = mh_xstrdup (local_part_end);
struct mailname *mp;
char *new_adr, *adr;
free (angle_addr);
free (new_adr);
free (np->adr);
- np->adr = strdup (adr);
+ np->adr = mh_xstrdup (adr);
/* Need to flush getname() */
while ((cp = getname (""))) continue;
free (fixed_str);
fixed_str = new_str;
} else {
- fixed_str = strdup (np->adr);
+ fixed_str = mh_xstrdup (np->adr);
}
}
return fixed_str;
}
free (fixed_str);
- return str ? strdup (str) : NULL;
+ return str ? mh_xstrdup (str) : NULL;
}