X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/ec18722d02bd307bd09f30715dc8ba4e1b8a6716..0a01282c77d958d15a135ade3fcd1ef6c57c7273:/uip/post.c diff --git a/uip/post.c b/uip/post.c index 5f70e62f..c6a09175 100644 --- a/uip/post.c +++ b/uip/post.c @@ -12,11 +12,12 @@ #include #include #include +#include "h/done.h" #include #include #include -#include "../sbr/m_mktemp.h" -#include "../sbr/message_id.h" +#include "sbr/m_mktemp.h" +#include "sbr/message_id.h" #ifdef HAVE_SYS_TIME_H # include @@ -290,7 +291,7 @@ static char *partno = NULL; static void putfmt (char *, char *, int *, FILE *); static void start_headers (void); static void finish_headers (FILE *); -static int get_header (char *, struct headers *); +static int get_header (char *, struct headers *) PURE; static int putadr (char *, char *, struct mailname *, FILE *, unsigned int, char *, unsigned int); static void putgrp (char *, char *, FILE *, unsigned int); @@ -301,12 +302,12 @@ static int annoaux (struct mailname *); static void insert_fcc (struct headers *, char *); static void make_bcc_file (int); static void verify_all_addresses (int, int, char *, int, char *); -static void chkadr (void); +static void chkadr (void) PURE; static void sigon (void); static void sigoff (void); static void p_refile (char *); static void fcc (char *, char *); -static void die (char *, char *, ...); +static void fatal (char *, char *, ...) CHECK_PRINTF(2, 3); static void post (char *, int, int, int, char *, int, char *); static void do_text (char *file, int fd); static void do_an_address (struct mailname *, int); @@ -584,8 +585,7 @@ main (int argc, char **argv) } if (msg) adios (NULL, "only one message at a time!"); - else - msg = cp; + msg = cp; } alias (AliasFile); @@ -670,9 +670,8 @@ main (int argc, char **argv) if (debug) { pl (); done (0); - } else { - fclose (out); } + fclose (out); /* * Here's how we decide which address to use as the envelope-from @@ -990,9 +989,8 @@ putfmt (char *name, char *str, int *eai, FILE *out) mp->m_bcc++; if (np->m_ingrp) mp->m_ingrp = np->m_ingrp; - else - if (mp->m_gname) - putgrp (namep, mp->m_gname, out, hdr->flags); + else if (mp->m_gname) + putgrp (namep, mp->m_gname, out, hdr->flags); if (mp->m_ingrp) { if (sm_mts == MTS_SENDMAIL_PIPE) { /* Catch this before sendmail chokes with: @@ -1224,9 +1222,10 @@ get_header (char *header, struct headers *table) { struct headers *h; + header = FENDNULL(header); for (h = table; h->value; h++) - if (!strcasecmp (FENDNULL(header), FENDNULL(h->value))) - return (h - table); + if (!strcasecmp(FENDNULL(h->value), header)) + return h - table; return NOTOK; } @@ -1302,7 +1301,7 @@ putadr (char *name, char *aka, struct mailname *mp, FILE *out, linepos += len; - return (flags & HTRY); + return flags & HTRY; } @@ -1429,7 +1428,7 @@ annoaux (struct mailname *mp) snprintf (buffer, sizeof(buffer), "%s\n", adrformat (mp)); i = strlen (buffer); - return (write (pfd, buffer, i) == i ? OK : NOTOK); + return write(pfd, buffer, i) == i ? OK : NOTOK; } @@ -1495,11 +1494,10 @@ make_bcc_file (int dashstuff) while (find_prefix () == NOTOK) { if (*cp < 'z') (*cp)++; - else - if (*++cp == 0) - adios (NULL, "can't find a unique delimiter string"); - else - (*cp)++; + else if (*++cp == 0) + adios (NULL, "can't find a unique delimiter string"); + else + (*cp)++; } fprintf (out, "%s: %s\n%s: multipart/digest; boundary=\"", @@ -1516,8 +1514,7 @@ make_bcc_file (int dashstuff) * of MIME encapsulation. */ if (filter != NULL) { - for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++) - sleep (5); + child_id = fork(); switch (child_id) { case NOTOK: adios ("fork", "unable to"); @@ -1541,7 +1538,7 @@ make_bcc_file (int dashstuff) execvp (program, vec); fprintf (stderr, "unable to exec "); perror (mhlproc); - _exit (-1); + _exit(1); default: pidXwait (child_id, mhlproc); @@ -1610,12 +1607,12 @@ static void chkadr (void) { if (badadr && unkadr) - die (NULL, "%d address%s unparsable, %d addressee%s undeliverable", + fatal (NULL, "%d address%s unparsable, %d addressee%s undeliverable", badadr, PLURALS(badadr), unkadr, PLURALS(badadr)); if (badadr) - die (NULL, "%d address%s unparsable", badadr, PLURALS(badadr)); + fatal (NULL, "%d address%s unparsable", badadr, PLURALS(badadr)); if (unkadr) - die (NULL, "%d addressee%s undeliverable", unkadr, PLURALS(unkadr)); + fatal (NULL, "%d addressee%s undeliverable", unkadr, PLURALS(unkadr)); } @@ -1656,7 +1653,7 @@ do_addresses (int bccque, int talk) chkadr (); if (rp_isbad (retval = sm_waend ())) - die (NULL, "problem ending addresses; %s", rp_string (retval)); + fatal (NULL, "problem ending addresses; %s", rp_string (retval)); } @@ -1673,7 +1670,7 @@ static void post (char *file, int bccque, int talk, int eai, char *envelope, int oauth_flag, char *auth_svc) { - int retval, i; + int retval; pid_t child_id; if (verbose) { @@ -1690,8 +1687,7 @@ post (char *file, int bccque, int talk, int eai, char *envelope, char **argp, *program; int argc; - for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++) - sleep (5); + child_id = fork(); switch (child_id) { case NOTOK: adios ("fork", "unable to"); @@ -1722,7 +1718,7 @@ post (char *file, int bccque, int talk, int eai, char *envelope, int eightbit = 0; if (fd == NOTOK) { - die (file, "unable to re-open"); + fatal (file, "unable to re-open"); } if (msgflags & MMIM && cte != UNKNOWN) { @@ -1732,7 +1728,7 @@ post (char *file, int bccque, int talk, int eai, char *envelope, } else { if (scan_input (fd, &eightbit) == NOTOK) { close (fd); - die (file, "problem reading from"); + fatal (file, "problem reading from"); } } @@ -1741,7 +1737,7 @@ post (char *file, int bccque, int talk, int eai, char *envelope, oauth_flag ? auth_svc : NULL, tlsflag)) || rp_isbad (retval = sm_winit (envelope, eai, eightbit))) { close (fd); - die (NULL, "problem initializing server; %s", rp_string (retval)); + fatal (NULL, "problem initializing server; %s", rp_string (retval)); } do_addresses (bccque, talk && verbose); @@ -1784,7 +1780,7 @@ verify_all_addresses (int talk, int eai, char *envelope, int oauth_flag, verbose, snoop, sasl, saslmech, user, oauth_flag ? auth_svc : NULL, tlsflag)) || rp_isbad (retval = sm_winit (envelope, eai, eightbit))) { - die (NULL, "problem initializing server; %s", rp_string (retval)); + fatal (NULL, "problem initializing server; %s", rp_string (retval)); } } @@ -1810,7 +1806,7 @@ verify_all_addresses (int talk, int eai, char *envelope, int oauth_flag, puts(" -- Address Verification Successful --"); if (!whomsw || checksw) - sm_end (DONE); + sm_end (whomsw ? OK : DONE); fflush (stdout); sigoff (); @@ -1874,7 +1870,7 @@ do_an_address (struct mailname *lp, int talk) default: if (!talk) fprintf (stderr, " %s: ", addr); - die (NULL, "unexpected response; %s", rp_string (retval)); + fatal (NULL, "unexpected response; %s", rp_string (retval)); } fflush (stdout); @@ -1891,11 +1887,11 @@ do_text (char *file, int fd) while ((state = read (fd, buf, sizeof(buf))) > 0) { if (rp_isbad (retval = sm_wtxt (buf, state))) - die (NULL, "problem writing text; %s\n", rp_string (retval)); + fatal (NULL, "problem writing text; %s\n", rp_string (retval)); } if (state == NOTOK) - die (file, "problem reading from"); + fatal (file, "problem reading from"); switch (retval = sm_wtend ()) { case RP_OK: @@ -1903,11 +1899,11 @@ do_text (char *file, int fd) case RP_NO: case RP_NDEL: - die (NULL, "posting failed; %s", rp_string (retval)); + fatal (NULL, "posting failed; %s", rp_string (retval)); break; default: - die (NULL, "unexpected response; %s", rp_string (retval)); + fatal (NULL, "unexpected response; %s", rp_string (retval)); } } @@ -1986,7 +1982,7 @@ static void fcc (char *file, char *folder) { pid_t child_id; - int i, status, argp; + int status, argp; char fold[BUFSIZ]; char **arglist, *program; @@ -1994,9 +1990,7 @@ fcc (char *file, char *folder) printf (" %sFcc %s: ", msgstate == RESENT ? "Resent-" : "", folder); fflush (stdout); - for (i = 0; (child_id = fork ()) == NOTOK && i < 5; i++) - sleep (5); - + child_id = fork(); switch (child_id) { case NOTOK: if (!verbose) @@ -2019,7 +2013,7 @@ fcc (char *file, char *folder) arglist[argp++] = fold; arglist[argp] = NULL; execvp (program, arglist); - _exit (-1); + _exit(1); default: if ((status = pidwait (child_id, OK))) { @@ -2041,7 +2035,7 @@ fcc (char *file, char *folder) */ static void -die (char *what, char *fmt, ...) +fatal (char *what, char *fmt, ...) { int err; va_list ap;