X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fspost.c;h=e2b5a88294d0158338352c57438a30430301c9b9;hp=7729e9bbfb6e2e11140d7e2d4eb0dc1fbf001fd7;hb=d4c34b4439a9dbd89664de460ed37ecddc260fb1;hpb=66aa5fa11f02d91364b6954bda61cba1674770fe diff --git a/uip/spost.c b/uip/spost.c index 7729e9b..e2b5a88 100644 --- a/uip/spost.c +++ b/uip/spost.c @@ -117,6 +117,7 @@ static enum { static char *tmpfil; static char *subject = NULL; /* the subject field for BCC'ing */ +static struct mailname *from = NULL; /* the from field for BCC'ing */ static char fccs[BUFSIZ] = ""; struct mailname *bccs = NULL; /* list of the bcc recipients */ struct mailname *recipients = NULL; /* list of the recipients */ @@ -242,7 +243,7 @@ main(int argc, char **argv) cp = add(buf, cp); } putfmt(name, cp, out); - free(cp); + mh_free0(&cp); continue; case BODY: @@ -318,7 +319,7 @@ main(int argc, char **argv) adios(EX_DATAERR, NULL, "message has no recipients"); } - sargv = mh_xmalloc(sizeof(char **) * (recipientsc + 4)); + sargv = mh_xcalloc(recipientsc + 4, sizeof(char **)); argp = sargv; *argp++ = "send-mail"; @@ -435,11 +436,11 @@ putfmt(char *name, char *str, FILE *out) /* needed because the address parser holds global state */ ismymbox(NULL); - for ( mp = addr_start.m_next; mp; mp = mp->m_next) { + for (mp = addr_start.m_next; mp; mp = mp->m_next) { if (ismymbox(mp)) { msgflags |= MFMM; if (my == NULL) { - my = mp; + from = my = mp; } } } @@ -553,7 +554,7 @@ putadr(char *name, struct mailname *nl) cp = getcpy(mp->m_gname); cp = add(";", cp); linepos = putone(cp, linepos, namelen); - free(cp); + mh_free0(&cp); cp = NULL; } } else { @@ -667,6 +668,9 @@ process_bccs(char *origmsg) for (mp=bccs; mp; mp=mp->m_next) { bccdraft = getcpy(m_mktemp2("/tmp/", invo_name, NULL, &out)); fprintf(out, "To: %s\n", mp->m_text); + if (from) { + fprintf(out, "From: %s\n", from->m_text); + } fprintf(out, "Subject: [BCC] %s", subject ? subject : ""); fprintf(out, "%s: %s\n", attach_hdr, origmsg); fprintf(out, "------------\n");