[bug #4302] errno is not always an extern int
[mmh] / uip / inc.c
index f076e48..af8180d 100644 (file)
--- a/uip/inc.c
+++ b/uip/inc.c
@@ -3,6 +3,10 @@
  * inc.c -- incorporate messages from a maildrop into a folder
  *
  * $Id$
+ *
+ * This code is Copyright (c) 2002, by the authors of nmh.  See the
+ * COPYRIGHT file in the root directory of the nmh distribution for
+ * complete copyright information.
  */
 
 #ifdef MAILGROUP
@@ -40,7 +44,7 @@
 #include <h/scansbr.h>
 #include <h/signals.h>
 #include <h/tws.h>
-#include <zotnet/mts/mts.h>
+#include <h/mts.h>
 #include <errno.h>
 #include <signal.h>
 
@@ -130,8 +134,6 @@ static struct swit switches[] = {
     { NULL, 0 }
 };
 
-extern int errno;
-
 /*
  * flags for the mail source
  */
@@ -232,19 +234,21 @@ main (int argc, char **argv)
     int chgflag = 1, trnflag = 1;
     int noisy = 1, width = 0;
     int rpop, i, hghnum, msgnum;
-    int kpop = 0;
+    int kpop = 0, sasl = 0;
     char *cp, *maildir, *folder = NULL;
     char *format = NULL, *form = NULL;
     char *host = NULL, *user = NULL;
-    char *audfile = NULL, *from = NULL;
+    char *audfile = NULL, *from = NULL, *saslmech = NULL;
     char buf[BUFSIZ], **argp, *nfs, **arguments;
     struct msgs *mp;
     struct stat st, s1;
     FILE *aud = NULL;
+    char       b[MAXPATHLEN + 1];
 
 #ifdef POP
     int nmsgs, nbytes, p = 0;
     char *pass = NULL;
+    char *MAILHOST_env_variable;
 #endif
 
 #ifdef MHE
@@ -253,7 +257,6 @@ main (int argc, char **argv)
 
 #ifdef HESIOD
     struct hes_postoffice *po;
-    char *tmphost;
 #endif
 
 /* absolutely the first thing we do is save our privileges,
@@ -275,7 +278,6 @@ main (int argc, char **argv)
     argp = arguments;
 
 #ifdef POP
-# ifdef HESIOD
     /*
      * Scheme is:
      *        use MAILHOST environment variable if present,
@@ -283,8 +285,9 @@ main (int argc, char **argv)
      *  If that fails, use the default (if any)
      *  provided by mts.conf in mts_init()
      */
-    if ((tmphost = getenv("MAILHOST")) != NULL)
-       pophost = tmphost;
+    if ((MAILHOST_env_variable = getenv("MAILHOST")) != NULL)
+       pophost = MAILHOST_env_variable;
+# ifdef HESIOD
     else if ((po = hes_getmailhost(getusername())) != NULL &&
             strcmp(po->po_type, "POP") == 0)
        pophost = po->po_host;
@@ -798,7 +801,6 @@ go_to_it:
            /* link message into folder */
            newmsg = folder_addmsg(mp, tmpfilenam);
 #endif
-
            /* create scanline for new message */
            switch (i = scan (in, msgnum + 1, msgnum + 1, nfs, width,
                              msgnum == hghnum && chgflag, 1, NULL, 0L, noisy)) {
@@ -822,6 +824,13 @@ go_to_it:
 
            case SCNMSG:
            case SCNENC:
+               /*
+                *  Run the external program hook on the message.
+                */
+
+               (void)snprintf(b, sizeof (b), "%s/%d", maildir, msgnum + 1);
+               (void)ext_hook("add-hook", b, (char *)0);
+
                if (aud)
                    fputs (scanl, aud);
 #ifdef MHE
@@ -833,6 +842,9 @@ go_to_it:
 
                msgnum++;
                mp->hghmsg++;
+               mp->nummsg++;
+               if (mp->lowmsg == 0) mp->lowmsg = 1;
+
                clear_msg_flags (mp, msgnum);
                set_exists (mp, msgnum);
                set_unseen (mp, msgnum);