]> diplodocus.org Git - nmh/blobdiff - uip/slocal.c
Moved all file static data in m_getfld.c into the
[nmh] / uip / slocal.c
index 5026d82ccd6cb8bdddb0f68aee8baa35a131efab..a665d0ad9bc2070186ef617ae148687df1aa6090 100644 (file)
@@ -25,7 +25,7 @@
 #include <h/dropsbr.h>
 #include <h/rcvmail.h>
 #include <h/signals.h>
-#include <h/m_setjmp.h>
+#include <setjmp.h>
 #include <h/tws.h>
 #include <h/mts.h>
 #include <h/utils.h>
@@ -51,7 +51,9 @@
 #include NDBM_HEADER
 #endif
 
+#ifdef HAVE_GETUTXENT
 #include <utmpx.h>
+#endif /* HAVE_GETUTXENT */
 
 static struct swit switches[] = {
 #define        ADDRSW         0
@@ -220,13 +222,12 @@ main (int argc, char **argv)
                    adios (NULL, "-%s unknown", cp);
 
                case HELPSW: 
-                   snprintf (buf, sizeof(buf),
-                       "%s [switches] [address info sender]", invo_name);
+                   snprintf (buf, sizeof(buf), "%s [switches]", invo_name);
                    print_help (buf, switches, 0);
-                   done (1);
+                   done (0);
                case VERSIONSW:
                    print_version(invo_name);
-                   done (1);
+                   done (0);
 
                case ADDRSW: 
                    if (!(addr = *argp++))/* allow -xyz arguments */
@@ -282,20 +283,8 @@ main (int argc, char **argv)
                    debug++;
                    continue;
            }
-       }
-
-       switch (argp - (argv + 1)) {
-           case 1: 
-               addr = cp;
-               break;
-
-           case 2: 
-               info = cp;
-               break;
-
-           case 3: 
-               sender = cp;
-               break;
+       } else {
+               adios (NULL, "only switch arguments are supported");
        }
     }
 
@@ -751,13 +740,14 @@ parse (int fd)
      * a lookup table.
      */
     for (i = 0, state = FLD;;) {
-       switch (state = m_getfld (state, name, field, sizeof(field), in)) {
+       int fieldsz = sizeof field;
+       switch (state = m_getfld (state, name, field, &fieldsz, in)) {
            case FLD: 
-           case FLDEOF: 
            case FLDPLUS: 
                lp = add (field, NULL);
                while (state == FLDPLUS) {
-                   state = m_getfld (state, name, field, sizeof(field), in);
+                   fieldsz = sizeof field;
+                   state = m_getfld (state, name, field, &fieldsz, in);
                    lp = add (field, lp);
                }
                for (p = hdrs; p->p_name; p++) {
@@ -786,12 +776,9 @@ parse (int fd)
                    p++, i++;
                    p->p_name = NULL;
                }
-               if (state != FLDEOF)
-                   continue;
-               break;
+               continue;
 
            case BODY: 
-           case BODYEOF: 
            case FILEEOF: 
                break;
 
@@ -930,6 +917,7 @@ lookup (struct pair *pairs, char *key)
 static int
 logged_in (void)
 {
+#if HAVE_GETUTXENT
     struct utmpx *utp;
 
     if (utmped)
@@ -948,6 +936,7 @@ logged_in (void)
     }
 
     endutxent();
+#endif /* HAVE_GETUTXENT */
     return (utmped = NOTOK);
 }
 
@@ -1053,18 +1042,6 @@ usr_folder (int fd, char *string)
     /* use rcvstore to put message in folder */
     status = usr_pipe (fd, "rcvstore", rcvstoreproc, vec, 1);
 
-#if 0
-    /*
-     * Currently, verbose status messages are handled by usr_pipe().
-     */
-    if (verbose) {
-       if (status == 0)
-           verbose_printf (", success.\n");
-       else
-           verbose_printf (", failed.\n");
-    }
-#endif
-
     return status;
 }
 
@@ -1123,7 +1100,7 @@ usr_pipe (int fd, char *cmd, char *pgm, char **vec, int suppress)
 
        default: 
            /* parent process */
-           if (! m_setjmp (myctx)) {
+           if (! setjmp (myctx)) {
                SIGNAL (SIGALRM, alrmser);
                bytes = fstat (fd, &st) != -1 ? (int) st.st_size : 100;
 
@@ -1286,13 +1263,6 @@ you_lose:
                /* get copy of envelope information ("From " line) */
                envelope = getcpy (buffer);
 
-#if 0
-               /* First go ahead and put "From " line in message */
-               fputs (buffer, ffp);
-               if (ferror (ffp))
-                   goto fputs_error;
-#endif
-
                /* Put the delivery date in message */
                fputs (ddate, ffp);
                if (ferror (ffp))
@@ -1452,21 +1422,24 @@ suppress_duplicates (int fd, char *file)
     rewind (in);
 
     for (state = FLD;;) {
-       state = m_getfld (state, name, buf, sizeof(buf), in);
+       int bufsz = sizeof buf;
+       state = m_getfld (state, name, buf, &bufsz, in);
        switch (state) {
            case FLD:
            case FLDPLUS:
-           case FLDEOF:
                /* Search for the message ID */
                if (mh_strcasecmp (name, "Message-ID")) {
-                   while (state == FLDPLUS)
-                       state = m_getfld (state, name, buf, sizeof(buf), in);
+                   while (state == FLDPLUS) {
+                       bufsz = sizeof buf;
+                       state = m_getfld (state, name, buf, &bufsz, in);
+                   }
                    continue;
                }
 
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
-                   state = m_getfld (state, name, buf, sizeof(buf), in);
+                   bufsz = sizeof buf;
+                   state = m_getfld (state, name, buf, &bufsz, in);
                    cp = add (buf, cp);
                }
                key.dptr = trimcpy (cp);
@@ -1514,7 +1487,6 @@ suppress_duplicates (int fd, char *file)
                break;
 
           case BODY:
-          case BODYEOF:
           case FILEEOF:
                break;