From 74631396d18f4c5b025e9cbbb70d0103c783037e Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sat, 26 Oct 1996 02:37:50 +0000 Subject: Added filtering by length. Ugh. svn path=/trunk/; revision=390 --- imap.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'imap.c') diff --git a/imap.c b/imap.c index 22f8db7c..c1dac5c8 100644 --- a/imap.c +++ b/imap.c @@ -111,6 +111,38 @@ int *countp, *newp; return(0); } +static int *imap_getsizes(socket, count) +/* capture the sizes of all messages */ +int socket; +int count; +{ + int ok, *sizes; + + if ((sizes = (int *)malloc(sizeof(int) * count)) == (int *)NULL) + return((int *)NULL); + else + { + char buf [POPBUFSIZE+1]; + + gen_send(socket, "FETCH 1:%d RFC822.SIZE", count); + while (SockGets(socket, buf, sizeof(buf)) >= 0) + { + int num, size; + + if (outlevel == O_VERBOSE) + fprintf(stderr,"%s\n",buf); + if (strstr(buf, "OK")) + break; + else if (sscanf(buf, "* %d FETCH (RFC822.SIZE %d)", &num, &size) == 2) + sizes[num - 1] = size; + else + sizes[num - 1] = -1; + } + + return(sizes); + } +} + static imap_is_old(socket, queryctl, num) int socket; struct hostrec *queryctl; @@ -181,6 +213,7 @@ const static struct method imap = imap_ok, /* parse command response */ imap_getauth, /* get authorization */ imap_getrange, /* query range of messages */ + imap_getsizes, /* grab message sizes */ imap_is_old, /* no UID check */ imap_fetch, /* request given message */ imap_trail, /* eat message trailer */ -- cgit v1.2.3