]> Pileus Git - ~andy/fetchmail/blobdiff - odmr.c
Attempt merging from 6.3.24.
[~andy/fetchmail] / odmr.c
diff --git a/odmr.c b/odmr.c
index 4f4aeca93d255f588e21e0dcc4ad7fe2d4c5d30f..64e70bcebb3e1af0311fec11474b48d24dc328ea 100644 (file)
--- a/odmr.c
+++ b/odmr.c
@@ -9,25 +9,15 @@
 #include  <stdio.h>
 #include  <stdlib.h>
 #include  <assert.h>
-#ifdef HAVE_STRING_H /* strcat() */
 #include <string.h>
-#endif
-#ifdef HAVE_NET_SOCKET_H /* BeOS needs this */
-#include <net/socket.h>
-#endif
 #include  <sys/types.h>
-#include  <sys/time.h>
-#ifdef HAVE_NET_SELECT_H /* AIX needs this */
-#include <net/select.h>
-#endif
-#ifdef HAVE_SYS_SELECT_H /* AIX 4.1, at least, needs this */
 #include  <sys/select.h>
-#endif
 #include  <netdb.h>
 #include  <errno.h>
 #include  <unistd.h>
-#include  "i18n.h"
+#include  "gettext.h"
 #include  "fetchmail.h"
+#include  "sdump.h"
 #include  "smtp.h"
 #include  "socket.h"
 
@@ -36,7 +26,8 @@ static int odmr_ok (int sock, char *argbuf)
 {
     int ok;
 
-    ok = SMTP_ok(sock);
+    (void)argbuf;
+    ok = SMTP_ok(sock, SMTP_MODE, TIMEOUT_DEFAULT);
     if (ok == SM_UNRECOVERABLE)
        return(PS_PROTOCOL);
     else
@@ -52,7 +43,8 @@ static int odmr_getrange(int sock, struct query *ctl, const char *id,
     char buf [MSGBUFSIZE+1];
     struct idlist *qnp;                /* pointer to Q names */
 
-    if ((ok = SMTP_ehlo(sock, fetchmailhost, 
+    (void)id;
+    if ((ok = SMTP_ehlo(sock, SMTP_MODE, fetchmailhost, 
                        ctl->server.esmtp_name, ctl->server.esmtp_password,
                        &opts)))
     {
@@ -125,9 +117,12 @@ static int odmr_getrange(int sock, struct query *ctl, const char *id,
        report(stderr, GT_("Authentication required.\n"));
        return(PS_AUTHFAIL);
 
-    default:
-       report(stderr, GT_("Unknown ODMR error %d\n"), atoi(buf));
-       return(PS_PROTOCOL);
+    default: {
+           char *t = sdump(buf, strlen(buf));
+           report(stderr, GT_("Unknown ODMR error \"%s\"\n"), t);
+           xfree(t);
+           return(PS_PROTOCOL);
+       }
     }
 
     /*
@@ -137,7 +132,7 @@ static int odmr_getrange(int sock, struct query *ctl, const char *id,
      * instead, we'll use select(2) to watch the read sides of both
      * sockets and just throw their data at each other.
      */
-    if ((smtp_sock = smtp_open(ctl)) == -1)
+    if ((smtp_sock = smtp_setup(ctl)) == -1)
        return(PS_SOCKET);
     else
     {
@@ -147,7 +142,6 @@ static int odmr_getrange(int sock, struct query *ctl, const char *id,
        {
            fd_set      readfds;
            struct timeval timeout;
-           char        buf[MSGBUFSIZE];
 
            FD_ZERO(&readfds);
            FD_SET(sock, &readfds);
@@ -184,7 +178,8 @@ static int odmr_getrange(int sock, struct query *ctl, const char *id,
                if (!doing_smtp_data && !strncmp(buf, "354", 3))
                {
                    doing_smtp_data = 1;
-                   report(stdout, "receiving message data\n");
+                  if (outlevel > O_SILENT)
+                      report(stdout, GT_("receiving message data\n"));
                }
                else if (doing_smtp_data)
                    doing_smtp_data = 0;
@@ -208,16 +203,11 @@ static int odmr_logout(int sock, struct query *ctl)
        return(PS_SUCCESS);
 }
 
-const static struct method odmr =
+static const struct method odmr =
 {
     "ODMR",            /* ODMR protocol */
-#if INET6_ENABLE
-    "odmr",            /* standard SMTP port */
-    "odmrs",           /* ssl SMTP port */
-#else /* INET6_ENABLE */
-    366,               /* standard SMTP port */
-    2366,              /* ssl SMTP port (BOGUS! RANDOM VALUE) */
-#endif /* INET6_ENABLE */
+    "odmr",            /* standard ODMR port */
+    "odmrs",           /* ssl ODMR port */
     FALSE,             /* this is not a tagged protocol */
     FALSE,             /* this does not use a message delimiter */
     odmr_ok,           /* parse command response */
@@ -231,6 +221,7 @@ const static struct method odmr =
     NULL,              /* no message trailer */
     NULL,              /* how to delete a message */
     NULL,              /* how to mark a message as seen */
+    NULL,              /* no mailbox support */
     odmr_logout,       /* log out, we're done */
     FALSE,             /* no, we can't re-poll */
 };
@@ -249,7 +240,7 @@ int doODMR (struct query *ctl)
        return(PS_SYNTAX);
     }
     if (ctl->mailboxes->id) {
-       fprintf(stderr, GT_("Option --remote is not supported with ODMR\n"));
+       fprintf(stderr, GT_("Option --folder is not supported with ODMR\n"));
        return(PS_SYNTAX);
     }
     if (check_only) {