X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fspost.c;h=ee36a6fbcd62405af7b181d4d9a565a2cee9dba1;hb=de448e64862babc8ea92d6ee3f61f68ba3915128;hp=73787f79ca8adbad53306da10816973e6b6b551e;hpb=5276fe8873c9201f9b4ba8c6fcb5efb3887eab77;p=mmh diff --git a/uip/spost.c b/uip/spost.c index 73787f7..ee36a6f 100644 --- a/uip/spost.c +++ b/uip/spost.c @@ -26,43 +26,35 @@ struct swit switches[] = { { "filter filterfile", 0 }, #define NFILTSW 1 { "nofilter", 0 }, -#define FRMTSW 2 - { "format", 0 }, -#define NFRMTSW 3 - { "noformat", 0 }, -#define REMVSW 4 - { "remove", 0 }, -#define NREMVSW 5 - { "noremove", 0 }, -#define VERBSW 6 +#define VERBSW 2 { "verbose", 0 }, -#define NVERBSW 7 +#define NVERBSW 3 { "noverbose", 0 }, -#define WATCSW 8 +#define WATCSW 4 { "watch", 0 }, -#define NWATCSW 9 +#define NWATCSW 5 { "nowatch", 0 }, -#define BACKSW 10 +#define BACKSW 6 { "backup", 0 }, -#define NBACKSW 11 +#define NBACKSW 7 { "nobackup", 0 }, -#define ALIASW 12 +#define ALIASW 8 { "alias aliasfile", 0 }, -#define NALIASW 13 +#define NALIASW 9 { "noalias", 0 }, -#define VERSIONSW 14 +#define VERSIONSW 10 { "version", 0 }, -#define HELPSW 15 +#define HELPSW 11 { "help", 0 }, -#define DEBUGSW 16 +#define DEBUGSW 12 { "debug", -5 }, -#define DISTSW 17 +#define DISTSW 13 { "dist", -4 }, /* interface from dist */ -#define PUSHSW 18 /* fork to sendmail then exit */ +#define PUSHSW 14 /* fork to sendmail then exit */ { "push", -4 }, -#define NPUSHSW 19 /* exec sendmail */ +#define NPUSHSW 15 /* exec sendmail */ { "nopush", -6 }, -#define LIBSW 20 +#define LIBSW 16 { "library directory", -7 }, { NULL, 0 } }; @@ -132,9 +124,8 @@ static struct headers RHeaders[] = { static int badmsg = 0; /* message has bad semantics */ static int verbose = 0; /* spell it out */ static int debug = 0; /* debugging post */ -static int rmflg = 1; /* remove temporary file when done */ static int watch = 0; /* watch the delivery process */ -static int backflg = 0; /* rename input file as *.bak when done */ +static int backflg = 0; /* prepend backup prefix to input file when done */ static int pushflg = 0; /* if going to fork to sendmail */ static int aliasflg = 0; /* if going to process aliases */ @@ -240,13 +231,6 @@ main(int argc, char **argv) filter = NULL; continue; - case REMVSW: - rmflg++; - continue; - case NREMVSW: - rmflg = 0; - continue; - case BACKSW: backflg++; continue; @@ -281,7 +265,7 @@ main(int argc, char **argv) argp[-2]); aliasflg = 1; if ((state = alias(cp)) != AK_OK) - adios(NULL, "aliasing error in file %s - %s", cp, akerror(state) ); + adios(NULL, "aliasing error in file %s - %s", cp, akerror(state)); continue; case NALIASW: aliasflg = 0; @@ -313,18 +297,17 @@ main(int argc, char **argv) if (debug) { verbose++; out = stdout; - } - else { + } else { #ifdef HAVE_MKSTEMP - if ((out = fdopen( mkstemp(tmpfil), "w" )) == NULL ) - adios(tmpfil, "unable to create"); + if ((out = fdopen(mkstemp(tmpfil), "w")) == NULL) + adios(tmpfil, "unable to create"); #else - mktemp(tmpfil); - if ((out = fopen(tmpfil, "w")) == NULL) - adios(tmpfil, "unable to create"); - chmod(tmpfil, 0600); + mktemp(tmpfil); + if ((out = fopen(tmpfil, "w")) == NULL) + adios(tmpfil, "unable to create"); + chmod(tmpfil, 0600); #endif - } + } hdrtab = (msgstate == normal) ? NHeaders : RHeaders; @@ -371,8 +354,8 @@ main(int argc, char **argv) } break; } - fclose(in); + if (backflg) { strncpy(buf, m_backup(msg), sizeof(buf)); if (rename(msg, buf) == NOTOK) @@ -380,11 +363,12 @@ main(int argc, char **argv) } if (debug) { + /* stop here */ done(0); - } else { - fclose(out); } + fclose(out); + /* process Fcc */ for (i=0; i */ - fprintf(out, "%s: %s", name, str ); + fprintf(out, "%s: %s", name, str); } } } @@ -634,34 +618,37 @@ putadr(char *name, struct mailname *nl) if (mp->m_nohost) { /* a local name - see if it's an alias */ cp = akvalue(mp->m_mbox); - if (cp == mp->m_mbox) + if (cp == mp->m_mbox) { /* wasn't an alias - use what the user typed */ linepos = putone(mp->m_text, linepos, namelen); - else + } else { /* an alias - expand it */ while ((cp = getname(cp))) { if (linepos > MAX_SM_FIELD) { - fprintf(out, "\n%s: ", name); - linepos = namelen; + fprintf(out, "\n%s: ", name); + linepos = namelen; } - mp2 = getm( cp, NULL, 0, AD_HOST, NULL); + mp2 = getm(cp, NULL, 0, AD_HOST, NULL); if (akvisible()) { mp2->m_pers = getcpy(mp->m_mbox); - linepos = putone( adrformat(mp2), linepos, namelen ); + linepos = putone(adrformat(mp2), linepos, namelen); } else { - linepos = putone( mp2->m_text, linepos, namelen ); + linepos = putone(mp2->m_text, + linepos, + namelen); } - mnfree( mp2 ); + mnfree(mp2); } + } } else { /* not a local name - use what the user typed */ - linepos = putone( mp->m_text, linepos, namelen ); + linepos = putone(mp->m_text, linepos, namelen); } mp2 = mp; mp = mp->m_next; - mnfree( mp2 ); + mnfree(mp2); } - putc( '\n', out ); + putc('\n', out); } static int @@ -670,19 +657,19 @@ putone(char *adr, int pos, int indent) register int len; static int linepos; - len = strlen( adr ); + len = strlen(adr); if (pos == indent) linepos = pos; else if (linepos+len > OUTPUTLINELEN) { - fprintf( out, ",\n%*s", indent, ""); + fprintf(out, ",\n%*s", indent, ""); linepos = indent; pos += indent + 2; } else { - fputs( ", ", out ); + fputs(", ", out); linepos += 2; pos += 2; } - fputs( adr, out ); + fputs(adr, out); linepos += len; return (pos+len); @@ -734,9 +721,10 @@ make_bcc_file(void) chmod(bccfil, 0600); fprintf(out, "Date: %s\n", dtimenow(0)); - if (msgflags & MFRM) { - /* There was already a From: in the draft. Don't add one. */ - if (!draft_from_masquerading) + if (!(msgflags & MFRM)) { + /* Construct a From: header. */ + fprintf(out, "From: %s\n", signature); + } else if (!draft_from_masquerading) { /* ** mts.conf didn't contain "masquerade:[...]draft_from[...]" ** so we'll reveal the user's actual account@thismachine @@ -744,15 +732,13 @@ make_bcc_file(void) ** From: later). */ fprintf(out, "Sender: %s\n", from); - } else - /* Construct a From: header. */ - fprintf(out, "From: %s\n", signature); + } if (subject) fprintf(out, "Subject: %s", subject); fprintf(out, "BCC:\n\n------- Blind-Carbon-Copy\n\n"); fflush(out); - if (filter == NULL) { + if (!filter) { if ((fd = open(tmpfil, O_RDONLY)) == NOTOK) adios(NULL, "unable to re-open"); cpydgst(fd, fileno(out), tmpfil, bccfil);