X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fspost.c;h=bfa8f4bed99e92a9743d02a0bc015e73340f47bf;hb=8ab7ca4f2b4caa1f1ed2859d7d911513a7b2b2a2;hp=de4a6d2863b56f0cef27d52dc3648212f4bffab4;hpb=ca0b3e830b86700d9e5e31b1784de2bdcaf58fc5;p=mmh diff --git a/uip/spost.c b/uip/spost.c index de4a6d2..bfa8f4b 100644 --- a/uip/spost.c +++ b/uip/spost.c @@ -149,7 +149,7 @@ main(int argc, char **argv) switch (smatch(++cp, switches)) { case AMBIGSW: ambigsw(cp, switches); - done(1); + exit(1); case UNKWNSW: adios(NULL, "-%s unknown", cp); @@ -158,10 +158,10 @@ main(int argc, char **argv) "%s [switches] file", invo_name); print_help(buf, switches, 1); - done(1); + exit(0); case VERSIONSW: print_version(invo_name); - done(1); + exit(0); case DEBUGSW: debug++; @@ -262,7 +262,7 @@ main(int argc, char **argv) if (debug) { /* stop here */ - done(0); + exit(0); } fclose(out); @@ -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);