X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fspost.c;h=b65e4c4227214524050055bb3779a3d5498b8011;hb=6e5da31c92f5a3fa38e010052c5a7743bfe1cf11;hp=fe2e34b5347ab42059151435a76f9788af00f03e;hpb=3e017a7abbdf69bf0dff7a4073275961eda1ded8;p=mmh diff --git a/uip/spost.c b/uip/spost.c index fe2e34b..b65e4c4 100644 --- a/uip/spost.c +++ b/uip/spost.c @@ -24,17 +24,13 @@ static struct swit switches[] = { { "verbose", 0 }, #define NVERBSW 1 { "noverbose", 2 }, -#define ALIASW 2 - { "alias aliasfile", 0 }, -#define NALIASW 3 - { "noalias", 2 }, -#define VERSIONSW 4 +#define VERSIONSW 2 { "Version", 0 }, -#define HELPSW 5 +#define HELPSW 3 { "help", 0 }, -#define DEBUGSW 6 +#define DEBUGSW 4 { "debug", -5 }, -#define DISTSW 7 +#define DISTSW 5 { "dist", -4 }, /* interface from dist */ { NULL, 0 } }; @@ -181,18 +177,6 @@ main(int argc, char **argv) case NVERBSW: verbose = 0; continue; - - case ALIASW: - if (!(cp = *argp++) || *cp == '-') - adios(NULL, "missing argument to %s", - argp[-2]); - aliasflg = 1; - if ((state = alias(cp)) != AK_OK) - adios(NULL, "aliasing error in file %s - %s", cp, akerror(state)); - continue; - case NALIASW: - aliasflg = 0; - continue; } } if (msg) @@ -214,6 +198,21 @@ main(int argc, char **argv) tmpfil = getcpy(m_mktemp2("/tmp/", invo_name, NULL, &out)); } + /* check for "Aliasfile:" profile entry */ + if ((cp = context_find("Aliasfile"))) { + char *dp, **ap; + + aliasflg = 1; + for (ap=brkstring(dp=getcpy(cp), " ", "\n"); ap && *ap; + ap++) { + if ((state = alias(etcpath(*ap))) != AK_OK) { + adios(NULL, "aliasing error in file %s: %s", + *ap, akerror(state)); + } + } + } + + hdrtab = (msgstate == normal) ? NHeaders : RHeaders; for (compnum = 1, state = FLD;;) { @@ -315,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; } @@ -426,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 { @@ -435,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); @@ -621,16 +628,10 @@ static void process_bccs(char *origmsg) { char *bccdraft = NULL; - char buf[BUFSIZ]; struct mailname *mp = NULL; FILE *out = NULL; for (mp=bccs; mp; mp=mp->m_next) { - /* - ** Note: This draft file will be left existing by send(1), - ** although renamed with backup prefix. - ** TODO: We should have it removed eventually. - */ bccdraft = getcpy(m_mktemp2("/tmp/", invo_name, NULL, &out)); fprintf(out, "To: %s\n", mp->m_text); fprintf(out, "Subject: [BCC] %s", subject ? subject : ""); @@ -638,12 +639,10 @@ 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); } - /* TODO: unlink renamed bcc draft after send(1) */ } }