]> diplodocus.org Git - nmh/blobdiff - uip/slocal.c
fdcompare.c: Move interface to own file.
[nmh] / uip / slocal.c
index fe027ee2f8b3f00c3a44e722a154a42222a0d3a0..9f784f8dac5144592195412a2023841cdd4da001 100644 (file)
  * Ruud de Rooij <ruud@ruud.org>  Sun, 28 May 2000 17:28:55 +0200
  */
 
  * 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/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/rcvmail.h"
+#include "h/signals.h"
 #include <setjmp.h>
 #include <setjmp.h>
-#include <h/tws.h>
-#include <h/mts.h>
-#include <h/utils.h>
+#include "h/tws.h"
+#include "h/mts.h"
+#include "h/done.h"
+#include "h/utils.h"
 #include "sbr/lock_file.h"
 #include "sbr/m_mktemp.h"
 
 #include "sbr/lock_file.h"
 #include "sbr/m_mktemp.h"
 
@@ -82,10 +88,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 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;
 
 static char *addr = NULL;
 static char *user = NULL;
@@ -188,7 +194,7 @@ main (int argc, char **argv)
     char mailbox[BUFSIZ], tmpfil[BUFSIZ];
     char **argp, **arguments;
 
     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);
 
     mts_init ();
     arguments = getarguments (invo_name, argc, argv, 0);
@@ -202,7 +208,7 @@ main (int argc, char **argv)
                    ambigsw (cp, switches);
                    done (1);
                case UNKWNSW: 
                    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 HELPSW: 
                    snprintf (buf, sizeof(buf), "%s [switches]", invo_name);
@@ -214,60 +220,60 @@ main (int argc, char **argv)
 
                case ADDRSW: 
                    if (!(addr = *argp++))/* allow -xyz arguments */
 
                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 */
                    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 */
                    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 == '-')
                    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 */
                    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 == '-')
                    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 == '-')
                    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 == '-')
                    continue;
 
                case MAILSW: 
                    if (!(cp = *argp++) || *cp == '-')
-                       adios (NULL, "missing argument to %s", argp[-2]);
+                       die("missing argument to %s", argp[-2]);
                    if (mdlvr)
                    if (mdlvr)
-                       adios (NULL, "only one maildelivery file at a time!");
+                       die("only one maildelivery file at a time!");
                    mdlvr = cp;
                    continue;
 
                case VERBSW: 
                    mdlvr = cp;
                    continue;
 
                case VERBSW: 
-                   verbose++;
+                   verbose = true;
                    continue;
                case NVERBSW: 
                    continue;
                case NVERBSW: 
-                   verbose = 0;
+                   verbose = false;
                    continue;
 
                case SUPPRESSDUP:
                    continue;
 
                case SUPPRESSDUP:
-                   suppressdup++;
+                   suppressdup = true;
                    continue;
                case NSUPPRESSDUP:
                    continue;
                case NSUPPRESSDUP:
-                   suppressdup = 0;
+                   suppressdup = false;
                    continue;
                case DEBUGSW: 
                    continue;
                case DEBUGSW: 
-                   debug++;
+                   debug = true;
                    continue;
            }
        } else {
                    continue;
            }
        } else {
-               adios (NULL, "only switch arguments are supported");
+               die("only switch arguments are supported");
        }
     }
 
        }
     }
 
@@ -277,7 +283,7 @@ main (int argc, char **argv)
        user = getusername ();
     }
     if ((pw = getpwnam (user)) == NULL)
        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) {
 
     if (chdir (pw->pw_dir) == -1)
        if (chdir ("/") < 0) {
@@ -302,7 +308,7 @@ main (int argc, char **argv)
 
     /* Record the delivery time */
     if ((now = dlocaltimenow ()) == NULL)
 
     /* 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));
 
     /*
     snprintf (ddate, sizeof(ddate), "Delivery-Date: %s\n", dtimenow (0));
 
     /*
@@ -317,7 +323,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)
        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 {
                   get_temp_dir());
        close (tempfd);
     } else {
@@ -325,7 +331,7 @@ main (int argc, char **argv)
        if (debug)
            debug_printf ("retrieving message from stdin\n");
        if ((fd = copy_message (fileno (stdin), tmpfil, 1)) == -1)
        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());
     }
 
                   get_temp_dir());
     }
 
@@ -346,7 +352,7 @@ main (int argc, char **argv)
     (void) m_unlink (tmpfil);
 
     if (!(fp = fdopen (fd, "r+")))
     (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
 
     /*
      * If no sender given, extract it
@@ -420,7 +426,12 @@ localmail (int fd, char *mdlvr)
 static int
 usr_delivery (int fd, char *delivery, int su)
 {
 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];
     char *field, *pattern, *action, *result, *string;
     char buffer[BUFSIZ], tmpbuf[BUFSIZ];
     char *vec[NVEC];
@@ -443,8 +454,8 @@ usr_delivery (int fd, char *delivery, int su)
        return -1;
     }
 
        return -1;
     }
 
-    won = 0;
-    next = 1;
+    won = false;
+    next = true;
 
     /* read and process delivery file */
     while (fgets (buffer, sizeof(buffer), fp)) {
 
     /* read and process delivery file */
     while (fgets (buffer, sizeof(buffer), fp)) {
@@ -502,7 +513,7 @@ usr_delivery (int fd, char *delivery, int su)
                 * Take action, and consider delivered if
                 * action is successful.
                 */
                 * Take action, and consider delivered if
                 * action is successful.
                 */
-               accept = 1;
+               accept = true;
                break;
 
            case 'R': 
                break;
 
            case 'R': 
@@ -512,7 +523,7 @@ usr_delivery (int fd, char *delivery, int su)
                 * Take action, but don't consider delivered, even
                 * if action is successful
                 */
                 * Take action, but don't consider delivered, even
                 * if action is successful
                 */
-               accept = 0;
+               accept = false;
                break;
        }
 
                break;
        }
 
@@ -555,9 +566,9 @@ usr_delivery (int fd, char *delivery, int su)
                 */
                if ((p = lookup (hdrs, field)) && (p->p_value != NULL)
                        && matches (p->p_value, pattern)) {
                 */
                if ((p = lookup (hdrs, field)) && (p->p_value != NULL)
                        && matches (p->p_value, pattern)) {
-                   next = 1;
+                   next = true;
                } else {
                } else {
-                   next = 0;
+                   next = false;
                    continue;
                }
                break;
                    continue;
                }
                break;
@@ -629,14 +640,14 @@ usr_delivery (int fd, char *delivery, int su)
                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)
 
        if (accept && status == 0)
-           won++;
+           won = true;
     }
 
     fclose (fp);
     }
 
     fclose (fp);
-    return (won ? 0 : -1);
+    return won ? 0 : -1;
 }
 
 
 }
 
 
@@ -802,12 +813,12 @@ parse (int fd)
        p->p_value = getcpy (q ? q->p_value : "");
        p->p_flags &= ~P_CHK;
        if (debug)
        p->p_value = getcpy (q ? q->p_value : "");
        p->p_flags &= ~P_CHK;
        if (debug)
-           debug_printf ("vars[%ld]: name=\"%s\" value=\"%s\"\n",
-                   p - vars, p->p_name, trim(p->p_value));
+            debug_printf ("vars[%td]: name=\"%s\" value=\"%s\"\n",
+                p - vars, p->p_name, trim(p->p_value));
     }
     if (debug) {
        for (p = hdrs; p->p_name; p++)
     }
     if (debug) {
        for (p = hdrs; p->p_name; p++)
-           debug_printf ("hdrs[%ld]: name=\"%s\" value=\"%s\"\n",
+           debug_printf ("hdrs[%td]: name=\"%s\" value=\"%s\"\n",
                p - hdrs, p->p_name, p->p_value ? trim(p->p_value) : "");
     }
 
                p - hdrs, p->p_name, p->p_value ? trim(p->p_value) : "");
     }
 
@@ -887,7 +898,7 @@ glob (int fd)
 
     if (debug) {
        for (p = vars; p->p_name; p++)
 
     if (debug) {
        for (p = vars; p->p_name; p++)
-           debug_printf ("vars[%ld]: name=\"%s\" value=\"%s\"\n",
+           debug_printf ("vars[%td]: name=\"%s\" value=\"%s\"\n",
                    p - vars, p->p_name, trim(p->p_value));
     }
 }
                    p - vars, p->p_name, trim(p->p_value));
     }
 }
@@ -931,13 +942,13 @@ logged_in (void)
             if (debug)
                 continue;
             endutxent();
             if (debug)
                 continue;
             endutxent();
-            return (utmped = DONE);
+            return utmped = DONE;
         }
     }
 
     endutxent();
 #endif /* HAVE_GETUTXENT */
         }
     }
 
     endutxent();
 #endif /* HAVE_GETUTXENT */
-    return (utmped = NOTOK);
+    return utmped = NOTOK;
 }
 
 #define        check(t,a,b)            if (t < a || t > b) return -1
 }
 
 #define        check(t,a,b)            if (t < a || t > b) return -1
@@ -1091,7 +1102,7 @@ usr_pipe (int fd_arg, char *cmd, char *pgm, char **vec, int suppress)
            setenv("SHELL", pw->pw_shell, 1);
 
            execvp (pgm, vec);
            setenv("SHELL", pw->pw_shell, 1);
 
            execvp (pgm, vec);
-           _exit (-1);
+           _exit(1);
 
        default: 
            /* parent process */
 
        default: 
            /* parent process */
@@ -1121,7 +1132,7 @@ usr_pipe (int fd_arg, char *cmd, char *pgm, char **vec, int suppress)
                     else
                         pidstatus (status, stdout, ", failed");
                }
                     else
                         pidstatus (status, stdout, ", failed");
                }
-               return (status == 0 ? 0 : -1);
+               return status == 0 ? 0 : -1;
            }
             /*
              * Ruthlessly kill the child and anything
            }
             /*
              * Ruthlessly kill the child and anything
@@ -1353,7 +1364,7 @@ adorn (char *what, char *fmt, ...)
     char *s;
 
     eindex = errno;    /* save the errno */
     char *s;
 
     eindex = errno;    /* save the errno */
-    printf(", ");
+    fputs(", ", stdout);
 
     va_start(ap, fmt);
     vprintf(fmt, ap);
 
     va_start(ap, fmt);
     vprintf(fmt, ap);