|
@@ -26,8 +26,8 @@ exit 0
|
|
|
|
|
|
@DPATCH@
|
|
@DPATCH@
|
|
diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
---- /usr/projects/isync/SF-cvs/isync/src/imap.c 2004-01-14 18:31:49.000000000 -0500
|
|
|
|
-+++ isync/src/imap.c 2004-01-14 18:39:18.000000000 -0500
|
|
|
|
|
|
+--- /usr/projects/isync/SF-cvs/isync/src/imap.c 2004-01-15 14:24:40.000000000 -0500
|
|
|
|
++++ isync/src/imap.c 2004-01-15 20:36:15.000000000 -0500
|
|
@@ -3,6 +3,7 @@
|
|
@@ -3,6 +3,7 @@
|
|
* isync - IMAP4 to maildir mailbox synchronizer
|
|
* isync - IMAP4 to maildir mailbox synchronizer
|
|
* Copyright (C) 2000-2002 Michael R. Elkins <me@mutt.org>
|
|
* Copyright (C) 2000-2002 Michael R. Elkins <me@mutt.org>
|
|
@@ -133,12 +133,20 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-@@ -415,39 +458,114 @@
|
|
|
|
|
|
+@@ -415,39 +458,121 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static int
|
|
-static int
|
|
-imap_exec (imap_t * imap, const char *fmt, ...)
|
|
-imap_exec (imap_t * imap, const char *fmt, ...)
|
|
|
|
++static void print_imap_command(const char *cmd, FILE *f)
|
|
|
|
++{
|
|
|
|
++ if (strncmp(cmd, "LOGIN", 5))
|
|
|
|
++ fputs(cmd, f);
|
|
|
|
++ else
|
|
|
|
++ fputs("LOGIN USERNAME PASSWORD", f);
|
|
|
|
++}
|
|
|
|
++
|
|
+static struct imap_cmd *issue_imap_cmd(imap_t *imap,
|
|
+static struct imap_cmd *issue_imap_cmd(imap_t *imap,
|
|
+ const char *fmt, ...)
|
|
+ const char *fmt, ...)
|
|
{
|
|
{
|
|
@@ -177,10 +185,9 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
- printf (">>> %s", buf);
|
|
- printf (">>> %s", buf);
|
|
+ if (num_in_progress)
|
|
+ if (num_in_progress)
|
|
+ printf("(%d in progress) ", num_in_progress);
|
|
+ printf("(%d in progress) ", num_in_progress);
|
|
-+ if (strncmp(tmp, "LOGIN", 5))
|
|
|
|
-+ printf (">>> %s", buf);
|
|
|
|
-+ else
|
|
|
|
-+ printf (">>> LOGIN USERNAME PASSWORD\n");
|
|
|
|
|
|
++ printf(">>> %d ", cmd->tag);
|
|
|
|
++ print_imap_command(tmp, stdout);
|
|
|
|
++ fputc('\n', stdout);
|
|
fflush (stdout);
|
|
fflush (stdout);
|
|
}
|
|
}
|
|
n = socket_write (imap->sock, buf, strlen (buf));
|
|
n = socket_write (imap->sock, buf, strlen (buf));
|
|
@@ -190,7 +197,7 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
- return -1;
|
|
- return -1;
|
|
+ free(cmd);
|
|
+ free(cmd);
|
|
+ return NULL;
|
|
+ return NULL;
|
|
-+ }
|
|
|
|
|
|
+ }
|
|
+ cmd->next = in_progress;
|
|
+ cmd->next = in_progress;
|
|
+ in_progress = cmd;
|
|
+ in_progress = cmd;
|
|
+ num_in_progress++;
|
|
+ num_in_progress++;
|
|
@@ -202,7 +209,7 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
+ printf("(Socket input pending)\n");
|
|
+ printf("(Socket input pending)\n");
|
|
+ get_cmd_result(imap);
|
|
+ get_cmd_result(imap);
|
|
+ }
|
|
+ }
|
|
- }
|
|
|
|
|
|
++ }
|
|
+ return cmd;
|
|
+ return cmd;
|
|
+}
|
|
+}
|
|
+
|
|
+
|
|
@@ -260,7 +267,7 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
|
|
|
|
arg = next_arg (&cmd);
|
|
arg = next_arg (&cmd);
|
|
if (*arg == '*')
|
|
if (*arg == '*')
|
|
-@@ -456,7 +574,7 @@
|
|
|
|
|
|
+@@ -456,7 +581,7 @@
|
|
if (!arg)
|
|
if (!arg)
|
|
{
|
|
{
|
|
fprintf (stderr, "IMAP error: unable to parse untagged response\n");
|
|
fprintf (stderr, "IMAP error: unable to parse untagged response\n");
|
|
@@ -269,7 +276,7 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
}
|
|
}
|
|
|
|
|
|
if (!strcmp ("NAMESPACE", arg))
|
|
if (!strcmp ("NAMESPACE", arg))
|
|
-@@ -528,23 +646,14 @@
|
|
|
|
|
|
+@@ -528,23 +653,14 @@
|
|
imap->recent = atoi (arg);
|
|
imap->recent = atoi (arg);
|
|
else if (!strcmp ("FETCH", arg1))
|
|
else if (!strcmp ("FETCH", arg1))
|
|
{
|
|
{
|
|
@@ -296,7 +303,7 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#if HAVE_LIBSSL
|
|
#if HAVE_LIBSSL
|
|
-@@ -555,7 +664,7 @@
|
|
|
|
|
|
+@@ -555,7 +671,7 @@
|
|
if (!imap->cram)
|
|
if (!imap->cram)
|
|
{
|
|
{
|
|
fprintf (stderr, "IMAP error, not doing CRAM-MD5 authentication\n");
|
|
fprintf (stderr, "IMAP error, not doing CRAM-MD5 authentication\n");
|
|
@@ -305,7 +312,7 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
}
|
|
}
|
|
resp = cram (cmd, imap->box->user, imap->box->pass);
|
|
resp = cram (cmd, imap->box->user, imap->box->pass);
|
|
|
|
|
|
-@@ -568,34 +677,88 @@
|
|
|
|
|
|
+@@ -568,34 +684,94 @@
|
|
if (n <= 0)
|
|
if (n <= 0)
|
|
{
|
|
{
|
|
socket_perror ("write", imap->sock, n);
|
|
socket_perror ("write", imap->sock, n);
|
|
@@ -344,8 +351,14 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
+ }
|
|
+ }
|
|
+ arg = next_arg (&cmd);
|
|
+ arg = next_arg (&cmd);
|
|
+ if (strncmp("OK", arg, 2)) {
|
|
+ if (strncmp("OK", arg, 2)) {
|
|
-+ fprintf(stderr, "tag %u returned error: %s\n",
|
|
|
|
-+ tag, arg);
|
|
|
|
|
|
++ if (cmdp->cmd) {
|
|
|
|
++ fputc('\'', stderr);
|
|
|
|
++ print_imap_command(cmdp->cmd, stderr);
|
|
|
|
++ fputc('\'', stderr);
|
|
|
|
++ } else
|
|
|
|
++ fprintf(stderr, "tag %u", tag);
|
|
|
|
++ fprintf(stderr, " returned an error (%s): %s\n",
|
|
|
|
++ arg, cmd ? cmd : "");
|
|
+ cmdp->response = -1;
|
|
+ cmdp->response = -1;
|
|
+ }
|
|
+ }
|
|
+ parse_response_code (imap, cmd);
|
|
+ parse_response_code (imap, cmd);
|
|
@@ -408,7 +421,7 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
#ifdef HAVE_LIBSSL
|
|
#ifdef HAVE_LIBSSL
|
|
static int
|
|
static int
|
|
start_tls (imap_t *imap, config_t * cfg)
|
|
start_tls (imap_t *imap, config_t * cfg)
|
|
-@@ -1039,6 +1202,7 @@
|
|
|
|
|
|
+@@ -1039,6 +1215,7 @@
|
|
size_t n;
|
|
size_t n;
|
|
char buf[1024];
|
|
char buf[1024];
|
|
|
|
|
|
@@ -416,7 +429,7 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
send_server (imap->sock, "UID FETCH %d BODY.PEEK[]", uid);
|
|
send_server (imap->sock, "UID FETCH %d BODY.PEEK[]", uid);
|
|
|
|
|
|
for (;;)
|
|
for (;;)
|
|
-@@ -1160,7 +1324,9 @@
|
|
|
|
|
|
+@@ -1160,7 +1337,9 @@
|
|
(buf[0] != 0) ? " " : "", Flags[i]);
|
|
(buf[0] != 0) ? " " : "", Flags[i]);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -427,7 +440,7 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
}
|
|
}
|
|
|
|
|
|
int
|
|
int
|
|
-@@ -1249,6 +1415,7 @@
|
|
|
|
|
|
+@@ -1249,6 +1428,7 @@
|
|
strcat (flagstr,") ");
|
|
strcat (flagstr,") ");
|
|
}
|
|
}
|
|
|
|
|
|
@@ -435,7 +448,7 @@ diff -urNad /usr/projects/isync/SF-cvs/isync/src/imap.c isync/src/imap.c
|
|
send_server (imap->sock, "APPEND %s%s %s{%d}",
|
|
send_server (imap->sock, "APPEND %s%s %s{%d}",
|
|
imap->prefix, imap->box->box, flagstr, len + extra);
|
|
imap->prefix, imap->box->box, flagstr, len + extra);
|
|
|
|
|
|
-@@ -1341,6 +1508,7 @@
|
|
|
|
|
|
+@@ -1341,6 +1521,7 @@
|
|
}
|
|
}
|
|
|
|
|
|
/* didn't receive an APPENDUID */
|
|
/* didn't receive an APPENDUID */
|