]> Pileus Git - ~andy/fetchmail/blobdiff - imap.c
Merge branch 'legacy_63'
[~andy/fetchmail] / imap.c
diff --git a/imap.c b/imap.c
index cb87eda5378f258f20955c3524f2f84c6d29cd0e..65d225381b7c1b926c5d38d1e8312dbaf67c6ee2 100644 (file)
--- a/imap.c
+++ b/imap.c
 #include  <string.h>
 #include  <strings.h>
 #include  <ctype.h>
-#if defined(STDC_HEADERS)
 #include  <stdlib.h>
 #include  <limits.h>
 #include  <errno.h>
-#endif
 #include  "fetchmail.h"
 #include  "socket.h"
 
-#include  "i18n.h"
+#include  "gettext.h"
 
 /* imap_version values */
-#define IMAP2          -1      /* IMAP2 or IMAP2BIS, RFC1176 */
 #define IMAP4          0       /* IMAP4 rev 0, RFC1730 */
 #define IMAP4rev1      1       /* IMAP4 rev 1, RFC2060 */
 
@@ -354,12 +351,6 @@ static int capa_probe(int sock, struct query *ctl)
                report(stdout, GT_("Protocol identified as IMAP4 rev 0\n"));
        }
     }
-    else if (ok == PS_ERROR)
-    {
-       imap_version = IMAP2;
-       if (outlevel >= O_DEBUG)
-           report(stdout, GT_("Protocol identified as IMAP2 or IMAP2BIS\n"));
-    }
     else
        return ok;
 
@@ -378,7 +369,7 @@ static int capa_probe(int sock, struct query *ctl)
            report(stdout, GT_("will idle after poll\n"));
     }
 
-    peek_capable = (imap_version >= IMAP4);
+    peek_capable = TRUE;
 
     return PS_SUCCESS;
 }
@@ -542,24 +533,6 @@ static int imap_getauth(int sock, struct query *ctl, char *greeting)
     }
 #endif /* GSSAPI */
 
-#ifdef KERBEROS_V4
-    if ((ctl->server.authenticate == A_ANY 
-        || ctl->server.authenticate == A_KERBEROS_V4
-        || ctl->server.authenticate == A_KERBEROS_V5) 
-       && strstr(capabilities, "AUTH=KERBEROS_V4"))
-    {
-       if ((ok = do_rfc1731(sock, "AUTHENTICATE", ctl->server.truename)))
-       {
-           /* SASL cancellation of authentication */
-           gen_send(sock, "*");
-           if(ctl->server.authenticate != A_ANY)
-                return ok;
-       }
-       else
-           return ok;
-    }
-#endif /* KERBEROS_V4 */
-
     /*
      * No such luck.  OK, now try the variants that mask your password
      * in a challenge-response.
@@ -619,15 +592,6 @@ static int imap_getauth(int sock, struct query *ctl, char *greeting)
     }
 #endif /* NTLM_ENABLE */
 
-#ifdef __UNUSED__      /* The Cyrus IMAP4rev1 server chokes on this */
-    /* this handles either AUTH=LOGIN or AUTH-LOGIN */
-    if ((imap_version >= IMAP4rev1) && (!strstr(capabilities, "LOGIN")))
-    {
-       report(stderr, 
-              GT_("Required LOGIN capability not supported by server\n"));
-    }
-#endif /* __UNUSED__ */
-
     /* 
      * We're stuck with sending the password en clair.
      * The reason for this odd-looking logic is that some
@@ -776,7 +740,7 @@ static int imap_search(int sock, struct query *ctl, int count)
      * higher and only when keeping mails. This flag will have an
      * effect only when user has marked some unread mails for deletion
      * using another e-mail client. */
-    flag skipdeleted = (imap_version >= IMAP4) && ctl->keep;
+    flag skipdeleted = ctl->keep;
     const char *undeleted;
 
     /* structure to keep the end portion of the incomplete response */
@@ -1208,28 +1172,23 @@ static int imap_fetch_body(int sock, struct query *ctl, int number, int *lenp)
      * equivalent".  However, we know of at least one server that
      * treats them differently in the presence of MIME attachments;
      * the latter form downloads the attachment, the former does not.
-     * The server is InterChange, and the fool who implemented this
-     * misfeature ought to be strung up by his thumbs.  
+     * The server is InterChange.
      *
      * When I tried working around this by disabling use of the 4rev1 form,
      * I found that doing this breaks operation with M$ Exchange.
      * Annoyingly enough, Exchange's refusal to cope is technically legal
-     * under RFC2062.  Trust Microsoft, the Great Enemy of interoperability
-     * standards, to find a way to make standards compliance irritating....
+     * under RFC2062.
      */
     switch (imap_version)
     {
     case IMAP4rev1:    /* RFC 2060 */
+    default:
        gen_send(sock, "FETCH %d BODY.PEEK[TEXT]", number);
        break;
 
     case IMAP4:                /* RFC 1730 */
        gen_send(sock, "FETCH %d RFC822.TEXT.PEEK", number);
        break;
-
-    default:           /* RFC 1176 */
-       gen_send(sock, "FETCH %d RFC822.TEXT", number);
-       break;
     }
 
     /* looking for FETCH response */
@@ -1311,21 +1270,13 @@ static int imap_delete(int sock, struct query *ctl, int number)
     number -= expunged;
 
     /*
-     * Use SILENT if possible as a minor throughput optimization.
-     * Note: this has been dropped from IMAP4rev1.
-     *
-     * We set \Seen because there are some IMAP servers (notably HP
-     * OpenMail and MS Exchange) do message-receipt DSNs,
-     * but only when the seen bit gets set.
-     * This is the appropriate time -- we get here right
+     * We set Seen because there are some IMAP servers (notably HP
+     * OpenMail) that do message-receipt DSNs, but only when the seen
+     * bit is set.  This is the appropriate time -- we get here right
      * after the local SMTP response that says delivery was
      * successful.
      */
-    if ((ok = gen_transact(sock,
-                       imap_version == IMAP4 
-                               ? "STORE %d +FLAGS.SILENT (%s)"
-                               : "STORE %d +FLAGS (%s)",
-                       number, delflags)))
+    if ((ok = gen_transact(sock, "STORE %d +FLAGS.SILENT (\\Seen \\Deleted)", number)))
        return(ok);
     else
        deletions++;
@@ -1353,11 +1304,7 @@ static int imap_mark_seen(int sock, struct query *ctl, int number)
     /* expunges change the message numbers */
     number -= expunged;
 
-    return(gen_transact(sock,
-       imap_version == IMAP4
-       ? "STORE %d +FLAGS.SILENT (\\Seen)"
-       : "STORE %d +FLAGS (\\Seen)",
-       number));
+    return(gen_transact(sock,"STORE %d +FLAGS.SILENT (\\Seen)", number));
 }
 
 static int imap_end_mailbox_poll(int sock, struct query *ctl)