X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fspost.c;h=b65e4c4227214524050055bb3779a3d5498b8011;hb=04e93dabf152cc30d0aeb043d65f911ef765a176;hp=de4a6d2863b56f0cef27d52dc3648212f4bffab4;hpb=ca0b3e830b86700d9e5e31b1784de2bdcaf58fc5;p=mmh diff --git a/uip/spost.c b/uip/spost.c index de4a6d2..b65e4c4 100644 --- a/uip/spost.c +++ b/uip/spost.c @@ -314,20 +314,25 @@ putfmt(char *name, char *str, FILE *out) char *cp; struct headers *hdr; - /* remove all leading whitespace (even newlines) */ - while (*str==' ' || *str=='\t' || *str=='\n') { + /* remove leading whitespace */ + while (*str==' ' || *str=='\t') { str++; } if ((i = get_header(name, hdrtab)) == NOTOK) { - /* no header we would care for: push it through */ - fprintf(out, "%s: %s", name, str); + /* no header we would care for */ + if (mh_strcasecmp(name, attach_hdr)!=0 && + mh_strcasecmp(name, sign_hdr)!=0 && + mh_strcasecmp(name, enc_hdr)!=0) { + /* push it through */ + fprintf(out, "%s: %s", name, str); + } return; } /* it's one of the interesting headers */ hdr = &hdrtab[i]; - if (hdr->flags & HIGN || !*str) { + if (hdr->flags & HIGN || strcmp(str, "\n")==0) { return; } @@ -425,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 { @@ -434,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); @@ -620,7 +628,6 @@ static void process_bccs(char *origmsg) { char *bccdraft = NULL; - char buf[BUFSIZ]; struct mailname *mp = NULL; FILE *out = NULL; @@ -632,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);