* Ruud de Rooij <ruud@ruud.org> Sun, 28 May 2000 17:28:55 +0200
*/
-#include <h/mh.h>
-#include <h/dropsbr.h>
-#include <h/rcvmail.h>
-#include <h/signals.h>
+#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 <setjmp.h>
-#include <h/tws.h>
-#include <h/mts.h>
+#include "h/tws.h"
+#include "h/mts.h"
#include "h/done.h"
-#include <h/utils.h>
+#include "h/utils.h"
#include "sbr/lock_file.h"
#include "sbr/m_mktemp.h"
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;
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);
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);
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");
}
}
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) {
/* 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));
/*
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 {
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());
}
(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
/* deliver the message */
status = localmail (fd, mdlvr);
- done (status != -1 ? RCV_MOK : RCV_MBX);
+ done(status != -1 ? 0 : 1);
return 1;
}
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];
return -1;
}
- won = 0;
- next = 1;
+ won = false;
+ next = true;
/* read and process delivery file */
while (fgets (buffer, sizeof(buffer), fp)) {
* Take action, and consider delivered if
* action is successful.
*/
- accept = 1;
+ accept = true;
break;
case 'R':
* Take action, but don't consider delivered, even
* if action is successful
*/
- accept = 0;
+ accept = false;
break;
}
*/
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;
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);
char *s;
eindex = errno; /* save the errno */
- printf(", ");
+ fputs(", ", stdout);
va_start(ap, fmt);
vprintf(fmt, ap);