char *cp, *msg = NULL, **argp, **arguments, *envelope;
char buf[NMH_BUFSIZ], name[NAMESZ], *auth_svc = NULL;
FILE *in, *out;
- m_getfld_state_t gstate = 0;
+ m_getfld_state_t gstate;
if (nmh_init(argv[0], 0 /* use context_foil() */)) { return 1; }
}
if (msg)
adios (NULL, "only one message at a time!");
- else
- msg = cp;
+ msg = cp;
}
alias (AliasFile);
hdrtab = msgstate == NORMAL ? NHeaders : RHeaders;
+ gstate = m_getfld_state_init(in);
for (compnum = 1;;) {
int bufsz = sizeof buf;
- switch (state = m_getfld (&gstate, name, buf, &bufsz, in)) {
+ switch (state = m_getfld2(&gstate, name, buf, &bufsz)) {
case FLD:
case FLDPLUS:
compnum++;
cp = mh_xstrdup(buf);
while (state == FLDPLUS) {
bufsz = sizeof buf;
- state = m_getfld (&gstate, name, buf, &bufsz, in);
+ state = m_getfld2(&gstate, name, buf, &bufsz);
cp = add (buf, cp);
}
putfmt (name, cp, &eai, out);
fprintf (out, "\n%s", buf);
while (state == BODY) {
bufsz = sizeof buf;
- state = m_getfld (&gstate, name, buf, &bufsz, in);
+ state = m_getfld2(&gstate, name, buf, &bufsz);
fputs (buf, out);
}
break;
if (debug) {
pl ();
done (0);
- } else {
- fclose (out);
}
+ fclose (out);
/*
* Here's how we decide which address to use as the envelope-from
if ((msgstate == RESENT) ? (hdr->set & MRFM) : (hdr->set & MFRM)) {
savehdr = fullfrom;
savehdr[0] = '\0';
- savehdlen = sizeof(fullfrom);
+ savehdrlen = sizeof(fullfrom);
}
tmpaddrs.m_next = NULL;
mp->m_bcc++;
if (np->m_ingrp)
mp->m_ingrp = np->m_ingrp;
- else
- if (mp->m_gname)
- putgrp (namep, mp->m_gname, out, hdr->flags);
+ else if (mp->m_gname)
+ putgrp (namep, mp->m_gname, out, hdr->flags);
if (mp->m_ingrp) {
if (sm_mts == MTS_SENDMAIL_PIPE) {
/* Catch this before sendmail chokes with:
mnfree (mp);
}
-#error
- strncpy(fullfrom, str, sizeof(fullfrom));
- fullfrom[sizeof(fullfrom) - 1] = 0;
- /*
- * Strip off any trailing newlines
- */
+ /*
+ * If it was a From header, strip off any trailing newlines from
+ * the alias-expanded From line.
+ */
+ if ((msgstate == RESENT) ? (hdr->set & MRFM) : (hdr->set & MFRM)) {
while (*fullfrom && fullfrom[strlen(fullfrom) - 1] == '\n') {
fullfrom[strlen(fullfrom) - 1] = '\0';
}
fputs (cp, out);
if (saveappend && shlen + len < savehdrsize)
- strncat(savehdr, out);
+ strncat(savehdr, cp, savehdrsize - shlen + len);
linepos += len;
while (find_prefix () == NOTOK) {
if (*cp < 'z')
(*cp)++;
- else
- if (*++cp == 0)
- adios (NULL, "can't find a unique delimiter string");
- else
- (*cp)++;
+ else if (*++cp == 0)
+ adios (NULL, "can't find a unique delimiter string");
+ else
+ (*cp)++;
}
fprintf (out, "%s: %s\n%s: multipart/digest; boundary=\"",