Use execprog() instead of system() ... partly transition
[mmh] / uip / spost.c
index 9b2ffcb..b65e4c4 100644 (file)
@@ -430,7 +430,7 @@ finish_headers(FILE *out)
                fprintf(out, "%sDate: %s\n", resentstr, dtimenow());
        }
 
-       strncpy(from, getusername(), sizeof(from));
+       snprintf(from, sizeof(from), "%s@%s", getusername(), LocalName());
        if ((cp = getfullname()) && *cp) {
                snprintf(signature, sizeof(signature), "%s <%s>", cp, from);
        } else {
@@ -439,11 +439,14 @@ finish_headers(FILE *out)
        if (!(msgflags & MFRM)) {
                fprintf(out, "%sFrom: %s\n", resentstr, signature);
        } else {
-               /* In case the From: header contains multiple addresses. */
+               /*
+               ** Add a Sender: header because the From: header could
+               ** be fake or contain multiple addresses.
+               */
                fprintf(out, "%sSender: %s\n", resentstr, from);
        }
        if (!(msgflags & MVIS)) {
-               fprintf(out, "%sBcc: Blind Distribution List: ;\n", resentstr);
+               fprintf(out, "%sBcc: undisclosed-recipients:;\n", resentstr);
        }
        if (badmsg) {
                unlink(tmpfil);
@@ -625,7 +628,6 @@ static void
 process_bccs(char *origmsg)
 {
        char *bccdraft = NULL;
-       char buf[BUFSIZ];
        struct mailname *mp = NULL;
        FILE *out = NULL;
 
@@ -637,8 +639,7 @@ process_bccs(char *origmsg)
                fprintf(out, "------------\n");
                fclose(out);
 
-               snprintf(buf, sizeof buf, "send %s", bccdraft);
-               if (system(buf) != 0) {
+               if (execprogl("send", "send", bccdraft, (char *)NULL) != 0) {
                        admonish(invo_name, "Problems to send Bcc to %s",
                                        mp->m_text);
                        unlink(bccdraft);