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 --- pop3.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'pop3.c') diff --git a/pop3.c b/pop3.c index c3b2da60..b898986b 100644 --- a/pop3.c +++ b/pop3.c @@ -186,7 +186,41 @@ int *countp, *newp; return(0); } +static int *pop3_getsizes(socket, count) +/* capture the sizes of all messages */ +int socket; +int count; +{ + int ok, *sizes; + + if ((ok = gen_transact(socket, "LIST")) != 0) + return((int *)NULL); + else if ((sizes = (int *)malloc(sizeof(int) * count)) == (int *)NULL) + return((int *)NULL); + else + { + char buf [POPBUFSIZE+1]; + + while (SockGets(socket, buf, sizeof(buf)) >= 0) + { + int num, size; + + if (outlevel == O_VERBOSE) + fprintf(stderr,"%s\n",buf); + if (buf[0] == '.') + break; + else if (sscanf(buf, "%d %d", &num, &size) == 2) + sizes[num - 1] = size; + else + sizes[num - 1] = -1; + } + + return(sizes); + } +} + static int pop3_is_old(socket, queryctl, num) +/* is the goiven message old? */ int socket; struct hostrec *queryctl; int num; @@ -240,6 +274,7 @@ const static struct method pop3 = pop3_ok, /* parse command response */ pop3_getauth, /* get authorization */ pop3_getrange, /* query range of messages */ + pop3_getsizes, /* we can get a list of sizes */ pop3_is_old, /* how do we tell a message is old? */ pop3_fetch, /* request given message */ NULL, /* no message trailer */ -- cgit v1.2.3