]> Pileus Git - ~andy/fetchmail/commitdiff
Ready for the UIDL patch.
authorEric S. Raymond <esr@thyrsus.com>
Fri, 7 Mar 1997 14:32:43 +0000 (14:32 -0000)
committerEric S. Raymond <esr@thyrsus.com>
Fri, 7 Mar 1997 14:32:43 +0000 (14:32 -0000)
svn path=/trunk/; revision=918

Makefile.in
NEWS
configure.in
driver.c
options.c
report.c
rfc822.c

index 018b701d8fe649b565e1980bc8d11c0421e58634..c17b4415289d075ffca5df5845a23d53b8de4055 100644 (file)
@@ -179,7 +179,7 @@ stamp-config: config.status $(srcdir)/config.h.in
 configure: configure.in
        autoconf $(ACFLAGS)
 
-config.h.in: acconfig.h
+config.h.in: acconfig.h configure.in
        autoheader $(ACFLAGS)
 
 # This tells versions [3.59,3.63) of GNU make not to export all variables.
diff --git a/NEWS b/NEWS
index f24772763e6e45cd4612a6b84e2b3b1f4b2e2e18..60798334aa614030cfed2107e84ad0d0ee813e93 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,32 +1,29 @@
                        To Do:
 
-1. George Sipe reports that --monitor is broken.
+George Sipe reports that --monitor is broken.
 
 This needs to be fixed.  --interface seems to work OK, so the error is
 evidently something pretty specific to the --monitor code.
 
-2. Rethink the handling of DNS errors in multidrop mode.
+                       Release Notes:
 
-The present behavior is to suppress forwarding and deletion of the
-individual message that each occurs in, leaving it queued on the server
-for retrieval on a subsequent poll.  The assumption is that DNS
-errors are transient, due to temporary server outages.
+------------------------------------------------------------------------------
+fetchmail-3.8 ()
 
-Unfortunately this means that if a DNS error is permanent a message
-can be perpetually stuck in the server mailbox.  We've had a couple
-bug reports of this kind due to subtle RFC822 parsing errors in the fetchmail
-code that resulted in impossible things getting passed to the DNS lookup
-routines.
+features --
 
-Alternative ways to handle the problem: ignore DNS errors (treating
-them as a non-match on the mailserver domain), or forward messages
-with errors to fetchmail's invoking user in addition to any other
-recipients.  These would fit an assummption that DNS lookup errors are
-likely to be permanent problems associated with an address.
+* More FAQ material on using `localdomains'.
 
-I'm not sure which is long-term appropriate.  
+* compilation hacks for ISC 4.0 (thanks, Larry Jones!)
 
-                       Release Notes:
+bugs --
+
+* enabled ETRN and RPOP command-line option
+
+* yet another attempt to fix the error.c compilation problems under
+  Solaris and NEXTSTEP.
+
+* handle \( and \) correctly in RFC822 comments.
 
 ------------------------------------------------------------------------------
 fetchmail-3.7 (Fri Feb 21 17:38:40 EST 1997)
index 72c225ee03b8446768871dd3bdcb1514bce563ab..42dcab26c1c432da2f211995005307a61549d31d 100644 (file)
@@ -23,7 +23,7 @@ AC_HEADER_STDC
 AC_TYPE_SIZE_T
 AC_TYPE_PID_T
 AC_TYPE_SIGNAL
-AC_CHECK_HEADERS(unistd.h termios.h termio.h sgtty.h stdarg.h alloca.h) 
+AC_CHECK_HEADERS(unistd.h termios.h termio.h sgtty.h stdarg.h alloca.h sys/itimer.h
 
 AC_C_CONST                     dnl getopt needs this.
 
@@ -32,6 +32,7 @@ AC_PROG_YACC
 AC_SUBST(LIBOBJS)
 
 AC_CHECK_LIB(socket,socket)
+AC_CHECK_LIB(inet,socket)
 AC_CHECK_LIB(nsl,inet_addr)
 
 
index 3628e2663c3e70765ebdabb9e12e17c153b3d074..73c439023c4c57be92d6ff777765f73fa1515795 100644 (file)
--- a/driver.c
+++ b/driver.c
@@ -26,6 +26,9 @@
 #if defined(HAVE_ALLOCA_H)
 #include <alloca.h>
 #endif
+#if defined(HAVE_SYS_ITIMER_H)
+#include <sys/itimer.h>
+#endif
 #include  <sys/time.h>
 #include  <signal.h>
 
index 7081ee84100bac6a575db3c34bb55aceb877cd68..52a08ef36f3c8b2f300002e08b2aa57f97ed0bcb 100644 (file)
--- a/options.c
+++ b/options.c
@@ -178,12 +178,16 @@ struct query *ctl;        /* option record to be initialized */
                ctl->server.protocol = P_IMAP;
            else if (strcasecmp(optarg,"apop") == 0)
                ctl->server.protocol = P_APOP;
+           else if (strcasecmp(optarg,"rpop") == 0)
+               ctl->server.protocol = P_RPOP;
            else if (strcasecmp(optarg,"kpop") == 0)
            {
                ctl->server.protocol = P_POP3;
                ctl->server.port = KPOP_PORT;
                ctl->server.authenticate =  A_KERBEROS;
            }
+           else if (strcasecmp(optarg,"etrn") == 0)
+               ctl->server.protocol = P_ETRN;
            else {
                fprintf(stderr,"Invalid protocol `%s' specified.\n", optarg);
                errflag++;
@@ -325,7 +329,7 @@ struct query *ctl;  /* option record to be initialized */
        fputs("  -M, --monitor     monitor interface for activity\n",stderr);
 #endif
 
-       fputs("  -p, --protocol    specify pop2, pop3, imap, apop, rpop, kpop\n", stderr);
+       fputs("  -p, --protocol    specify pop2, pop3, imap, apop, rpop, kpop, etrn\n", stderr);
        fputs("  -P, --port        TCP/IP service port to connect to\n",stderr);
        fputs("  -A, --auth        authentication type (password or kerberos)\n",stderr);
        fputs("  -t, --timeout     server nonresponse timeout\n",stderr);
index 174abeb99e5a57d2af8979aa0093ceb68cbb4e25..86950dfdc6076af513ed99eccb101b5f32873b13 100644 (file)
--- a/report.c
+++ b/report.c
@@ -279,8 +279,9 @@ error_build (message, va_alist)
         partial_message = xrealloc (partial_message, partial_message_size);
       }
 
-#if defined(VA_START) && (HAVE_VSNPRINTF || _LIBC)
+#if defined(VA_START)
   VA_START (args, message);
+#if HAVE_VSNPRINTF || _LIBC
   for ( ; ; )
     {
       n = vsnprintf (partial_message + partial_message_size_used,
@@ -296,6 +297,16 @@ error_build (message, va_alist)
       partial_message_size += 512;
       partial_message = xrealloc (partial_message, partial_message_size);
     }
+#else
+  partial_message_size_used += vsprintf (partial_message + partial_message_size_used, message, args);
+
+  /* Attempt to catch memory overwrites... */
+  if (partial_message_size_used >= partial_message_size)
+    {
+      partial_message_size_used = 0;
+      error (PS_UNDEFINED, 0, "partial error message buffer overflow");
+    }
+#endif
   va_end (args);
 #else
 #if HAVE_SNPRINTF
@@ -369,8 +380,9 @@ error_complete (status, errnum, message, va_alist)
         partial_message = xrealloc (partial_message, partial_message_size);
       }
 
-#if defined(VA_START) && (HAVE_VSNPRINTF || _LIBC)
+#if defined(VA_START)
   VA_START (args, message);
+#if HAVE_VSNPRINTF || _LIBC
   for ( ; ; )
     {
       n = vsnprintf (partial_message + partial_message_size_used,
@@ -386,6 +398,16 @@ error_complete (status, errnum, message, va_alist)
       partial_message_size += 512;
       partial_message = xrealloc (partial_message, partial_message_size);
     }
+#else
+  partial_message_size_used += vsprintf (partial_message + partial_message_size_used, message, args);
+
+  /* Attempt to catch memory overwrites... */
+  if (partial_message_size_used >= partial_message_size)
+    {
+      partial_message_size_used = 0;
+      error (PS_UNDEFINED, 0, "partial error message buffer overflow");
+    }
+#endif
   va_end (args);
 #else
 #if HAVE_SNPRINTF
index 0d9f448b04b94fca1186b84ddc17806bf6b927b7..f7a74212553a62eb5556b39218bb9592dde91a2e 100644 (file)
--- a/rfc822.c
+++ b/rfc822.c
@@ -162,8 +162,11 @@ const char *hdr;   /* header to be parsed, NUL to continue previous hdr */
        }
        else if (*hp == '\\')           /* handle RFC822 escaping */
        {
-           *tp++ = *hp++;                      /* take the escape */
-           *tp++ = *hp;                        /* take following char */
+           if (state != INSIDE_PARENS)
+           {
+               *tp++ = *hp++;                  /* take the escape */
+               *tp++ = *hp;                    /* take following char */
+           }
        }
        else switch (state)
        {