X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/4d9f9e116593fe887164ea52576565ec54a07820..ec173fd2c:/uip/slocal.c?ds=inline diff --git a/uip/slocal.c b/uip/slocal.c index dae9ca95..5eb5243c 100644 --- a/uip/slocal.c +++ b/uip/slocal.c @@ -19,15 +19,28 @@ * Ruud de Rooij Sun, 28 May 2000 17:28:55 +0200 */ -#include -#include -#include -#include +#include "h/mh.h" +#include "sbr/dtime.h" +#include "sbr/m_gmprot.h" +#include "sbr/m_getfld.h" +#include "sbr/getarguments.h" +#include "sbr/smatch.h" +#include "sbr/strindex.h" +#include "sbr/closefds.h" +#include "sbr/trimcpy.h" +#include "sbr/getcpy.h" +#include "sbr/ambigsw.h" +#include "sbr/pidstatus.h" +#include "sbr/print_version.h" +#include "sbr/print_help.h" +#include "sbr/error.h" +#include "h/dropsbr.h" +#include "h/signals.h" #include -#include -#include +#include "h/tws.h" +#include "h/mts.h" #include "h/done.h" -#include +#include "h/utils.h" #include "sbr/lock_file.h" #include "sbr/m_mktemp.h" @@ -83,10 +96,10 @@ DEFINE_SWITCH_ARRAY(SLOCAL, switches); static int globbed = 0; /* have we built "vars" table yet? */ static int parsed = 0; /* have we built header field table yet */ static int utmped = 0; /* have we scanned umtp(x) file yet */ -static int suppressdup = 0; /* are we suppressing duplicate messages? */ +static bool suppressdup; /* are we suppressing duplicate messages? */ -static int verbose = 0; -static int debug = 0; +static bool verbose; +static bool debug; static char *addr = NULL; static char *user = NULL; @@ -189,7 +202,7 @@ main (int argc, char **argv) char mailbox[BUFSIZ], tmpfil[BUFSIZ]; char **argp, **arguments; - if (nmh_init(argv[0], 0 /* use context_foil() */)) { return 1; } + if (nmh_init(argv[0], false, false)) { return 1; } mts_init (); arguments = getarguments (invo_name, argc, argv, 0); @@ -203,7 +216,7 @@ main (int argc, char **argv) ambigsw (cp, switches); done (1); case UNKWNSW: - adios (NULL, "-%s unknown", cp); + die("-%s unknown", cp); case HELPSW: snprintf (buf, sizeof(buf), "%s [switches]", invo_name); @@ -215,60 +228,60 @@ main (int argc, char **argv) case ADDRSW: if (!(addr = *argp++))/* allow -xyz arguments */ - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); continue; case INFOSW: if (!(info = *argp++))/* allow -xyz arguments */ - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); continue; case USERSW: if (!(user = *argp++))/* allow -xyz arguments */ - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); continue; case FILESW: if (!(file = *argp++) || *file == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); continue; case SENDERSW: if (!(sender = *argp++))/* allow -xyz arguments */ - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); continue; case MAILBOXSW: if (!(mbox = *argp++) || *mbox == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); continue; case HOMESW: if (!(home = *argp++) || *home == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); continue; case MAILSW: if (!(cp = *argp++) || *cp == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); if (mdlvr) - adios (NULL, "only one maildelivery file at a time!"); + die("only one maildelivery file at a time!"); mdlvr = cp; continue; case VERBSW: - verbose++; + verbose = true; continue; case NVERBSW: - verbose = 0; + verbose = false; continue; case SUPPRESSDUP: - suppressdup++; + suppressdup = true; continue; case NSUPPRESSDUP: - suppressdup = 0; + suppressdup = false; continue; case DEBUGSW: - debug++; + debug = true; continue; } } else { - adios (NULL, "only switch arguments are supported"); + die("only switch arguments are supported"); } } @@ -278,7 +291,7 @@ main (int argc, char **argv) user = getusername (); } if ((pw = getpwnam (user)) == NULL) - adios (NULL, "no such local user as %s", user); + die("no such local user as %s", user); if (chdir (pw->pw_dir) == -1) if (chdir ("/") < 0) { @@ -303,7 +316,7 @@ main (int argc, char **argv) /* Record the delivery time */ if ((now = dlocaltimenow ()) == NULL) - adios (NULL, "unable to ascertain local time"); + die("unable to ascertain local time"); snprintf (ddate, sizeof(ddate), "Delivery-Date: %s\n", dtimenow (0)); /* @@ -318,7 +331,7 @@ main (int argc, char **argv) if (debug) debug_printf ("retrieving message from file \"%s\"\n", file); if ((fd = copy_message (tempfd, tmpfil, 1)) == -1) - adios(NULL, "unable to create temporary file in %s", + die("unable to create temporary file in %s", get_temp_dir()); close (tempfd); } else { @@ -326,7 +339,7 @@ main (int argc, char **argv) if (debug) debug_printf ("retrieving message from stdin\n"); if ((fd = copy_message (fileno (stdin), tmpfil, 1)) == -1) - adios(NULL, "unable to create temporary file in %s", + die("unable to create temporary file in %s", get_temp_dir()); } @@ -347,7 +360,7 @@ main (int argc, char **argv) (void) m_unlink (tmpfil); if (!(fp = fdopen (fd, "r+"))) - adios (NULL, "unable to access temporary file"); + die("unable to access temporary file"); /* * If no sender given, extract it @@ -379,7 +392,7 @@ main (int argc, char **argv) /* deliver the message */ status = localmail (fd, mdlvr); - done (status != -1 ? RCV_MOK : RCV_MBX); + done(status != -1 ? 0 : 1); return 1; } @@ -421,7 +434,12 @@ localmail (int fd, char *mdlvr) static int usr_delivery (int fd, char *delivery, int su) { - int i, accept, status=1, won, vecp, next; + int i; + bool accept; + int status=1; + bool won; + int vecp; + bool next; char *field, *pattern, *action, *result, *string; char buffer[BUFSIZ], tmpbuf[BUFSIZ]; char *vec[NVEC]; @@ -444,8 +462,8 @@ usr_delivery (int fd, char *delivery, int su) return -1; } - won = 0; - next = 1; + won = false; + next = true; /* read and process delivery file */ while (fgets (buffer, sizeof(buffer), fp)) { @@ -503,7 +521,7 @@ usr_delivery (int fd, char *delivery, int su) * Take action, and consider delivered if * action is successful. */ - accept = 1; + accept = true; break; case 'R': @@ -513,7 +531,7 @@ usr_delivery (int fd, char *delivery, int su) * Take action, but don't consider delivered, even * if action is successful */ - accept = 0; + accept = false; break; } @@ -556,9 +574,9 @@ usr_delivery (int fd, char *delivery, int su) */ if ((p = lookup (hdrs, field)) && (p->p_value != NULL) && matches (p->p_value, pattern)) { - next = 1; + next = true; } else { - next = 0; + next = false; continue; } break; @@ -630,10 +648,10 @@ usr_delivery (int fd, char *delivery, int su) break; } - if (status) next = 0; /* action failed, mark for 'N' result */ + if (status) next = false; /* action failed, mark for 'N' result */ if (accept && status == 0) - won++; + won = true; } fclose (fp); @@ -1354,7 +1372,7 @@ adorn (char *what, char *fmt, ...) char *s; eindex = errno; /* save the errno */ - printf(", "); + fputs(", ", stdout); va_start(ap, fmt); vprintf(fmt, ap);