diff options
Diffstat (limited to 'driver.c')
-rw-r--r-- | driver.c | 33 |
1 files changed, 18 insertions, 15 deletions
@@ -377,7 +377,7 @@ static void mark_oversized(struct query *ctl, int num, int size) } static int fetch_messages(int mailserver_socket, struct query *ctl, - int count, int *msgsizes, int maxfetch, + int count, int *msgsizes, int *msgcodes, int maxfetch, int *fetches, int *dispatches, int *deletions) /* fetch messages in lockstep mode */ { @@ -390,16 +390,16 @@ static int fetch_messages(int mailserver_socket, struct query *ctl, flag suppress_readbody = FALSE; flag retained = FALSE; - if (msgsizes[num-1] < 0) + if (msgcodes[num-1] < 0) { - if ((msgsizes[num-1] == MSGLEN_TOOLARGE) && !check_only) + if ((msgcodes[num-1] == MSGLEN_TOOLARGE) && !check_only) mark_oversized(ctl, num, msgsizes[num-1]); if (outlevel > O_SILENT) { report_build(stdout, _("skipping message %d (%d octets)"), num, msgsizes[num-1]); - switch (msgsizes[num-1]) + switch (msgcodes[num-1]) { case MSGLEN_INVALID: /* @@ -432,7 +432,7 @@ static int fetch_messages(int mailserver_socket, struct query *ctl, return(err); /* -1 means we didn't see a size in the response */ - if (len == -1 && msgsizes) + if (len == -1) { len = msgsizes[num - 1]; wholesize = TRUE; @@ -572,7 +572,7 @@ static int fetch_messages(int mailserver_socket, struct query *ctl, * QUALCOMM server (at least) seems to be * reporting the on-disk size correctly. */ - if (msgsizes && msgblk.msglen != msgsizes[num-1]) + if (msgblk.msglen != msgsizes[num-1]) { if (outlevel >= O_DEBUG) report(stdout, @@ -606,7 +606,7 @@ static int fetch_messages(int mailserver_socket, struct query *ctl, struct idlist *sdp; for (sdp = ctl->newsaved; sdp; sdp = sdp->next) - if ((sdp->val.status.num == num) && (msgsizes[num-1] > 0)) + if ((sdp->val.status.num == num) && (msgcodes[num-1] > 0)) { sdp->val.status.mark = UID_SEEN; save_str(&ctl->oldsaved, sdp->id,UID_SEEN); @@ -621,7 +621,7 @@ static int fetch_messages(int mailserver_socket, struct query *ctl, } else if (ctl->server.base_protocol->delete && !suppress_delete - && ((msgsizes[num-1] > 0) ? !ctl->keep : ctl->flush)) + && ((msgcodes[num-1] > 0) ? !ctl->keep : ctl->flush)) { (*deletions)++; if (outlevel > O_SILENT) @@ -764,7 +764,9 @@ const int maxfetch; /* maximum number of messages to fetch */ else { char buf[MSGBUFSIZE+1], *realhost; - int count, new, bytes, deletions = 0, *msgsizes = NULL; + int count, new, bytes, deletions = 0; + int *msgsizes = (int *)NULL; + int *msgcodes = (int *)NULL; #if INET6_ENABLE int fetches, dispatches, oldphase; #else /* INET6_ENABLE */ @@ -1170,8 +1172,9 @@ is restored.")); /* OK, we're going to gather size info next */ xalloca(msgsizes, int *, sizeof(int) * count); + xalloca(msgcodes, int *, sizeof(int) * count); for (i = 0; i < count; i++) - msgsizes[i] = MSGLEN_UNKNOWN; + msgcodes[num - 1] = MSGLEN_UNKNOWN; /* * We need the size of each message before it's @@ -1199,11 +1202,11 @@ is restored.")); for (num = 1; num <= count; num++) { if (NUM_NONZERO(ctl->limit) && (msgsizes[num-1] > ctl->limit)) - msgsizes[num-1] = MSGLEN_TOOLARGE; + msgcodes[num-1] = MSGLEN_TOOLARGE; else if (ctl->fetchall || force_retrieval) continue; else if (ctl->server.base_protocol->is_old && (ctl->server.base_protocol->is_old)(mailserver_socket,ctl,num)) - msgsizes[num-1] = MSGLEN_OLD; + msgcodes[num-1] = MSGLEN_OLD; } /* read, forward, and delete messages */ @@ -1211,9 +1214,9 @@ is restored.")); /* fetch in lockstep mode */ err = fetch_messages(mailserver_socket, ctl, - count, msgsizes, - maxfetch, - &fetches, &dispatches, &deletions); + count, msgsizes, msgcodes, + maxfetch, + &fetches, &dispatches, &deletions); if (err) goto cleanUp; |