From b5821b2f3d9dcd6ad6c3a6aebc57cf93f3df53df Mon Sep 17 00:00:00 2001 From: Christoph Hohmann Date: Tue, 2 Jul 2002 22:28:11 +0000 Subject: [PATCH] * src/imap.c better IMAP uid fetching using 'FETCH 1:* (UID)' * src/msgcache.c add missing return in msgcache_write --- ChangeLog.claws | 7 +++++++ configure.in | 2 +- src/imap.c | 25 +++++++++++++++++-------- src/msgcache.c | 1 + 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/ChangeLog.claws b/ChangeLog.claws index fc8fdc1f2..72178e2d3 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -1,3 +1,10 @@ +2002-07-03 [christoph] 0.7.8claws45 + + * src/imap.c + better IMAP uid fetching using 'FETCH 1:* (UID)' + * src/msgcache.c + add missing return in msgcache_write + 2002-07-02 [thorsten] 0.7.8claws44 * src/jpilot.c diff --git a/configure.in b/configure.in index 69931ad44..b76ca631f 100644 --- a/configure.in +++ b/configure.in @@ -9,7 +9,7 @@ MINOR_VERSION=7 MICRO_VERSION=8 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=claws44 +EXTRA_VERSION=claws45 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION dnl set $target diff --git a/src/imap.c b/src/imap.c index 4a89cdc7e..ee764c852 100644 --- a/src/imap.c +++ b/src/imap.c @@ -3045,7 +3045,7 @@ GSList *imap_get_num_list(Folder *folder, FolderItem *item) gint i; gint ok, exists = 0, recent = 0, unseen = 0; guint32 uid_validity = 0; - guint32 uid = 0; + GPtrArray *argbuf; g_return_val_if_fail(folder != NULL, NULL); g_return_val_if_fail(item != NULL, NULL); @@ -3061,17 +3061,27 @@ GSList *imap_get_num_list(Folder *folder, FolderItem *item) if (ok != IMAP_SUCCESS) return NULL; - for(i = 1; i <= exists; i++) { - ok = imap_get_uid(session, i, &uid); - if (ok != IMAP_SUCCESS) - return msgnum_list; - msgnum_list = g_slist_prepend(msgnum_list, GINT_TO_POINTER(uid)); + argbuf = g_ptr_array_new(); + imap_cmd_gen_send(SESSION(session)->sock, "FETCH 1:* (UID)"); + ok = imap_cmd_ok(SESSION(session)->sock, argbuf); + if (ok != IMAP_SUCCESS) { + ptr_array_free_strings(argbuf); + g_ptr_array_free(argbuf, TRUE); + return NULL; + } + + for(i = 0; i < argbuf->len; i++) { + int ret, msgidx, msgnum; + + if((ret = sscanf(g_ptr_array_index(argbuf, i), "%d FETCH (UID %d)", &msgidx, &msgnum)) == 2) { + msgnum_list = g_slist_prepend(msgnum_list, GINT_TO_POINTER(msgnum)); + } } return msgnum_list; } -MsgInfo *imap_fetch_msginfo (Folder *folder, FolderItem *item, gint num) +MsgInfo *imap_fetch_msginfo(Folder *folder, FolderItem *item, gint num) { gchar *tmp; IMAPSession *session; @@ -3079,7 +3089,6 @@ MsgInfo *imap_fetch_msginfo (Folder *folder, FolderItem *item, gint num) MsgInfo *msginfo; gint ok, exists = 0, recent = 0, unseen = 0; guint32 uid_validity = 0; - guint32 uid = 0; g_return_val_if_fail(folder != NULL, NULL); g_return_val_if_fail(item != NULL, NULL); diff --git a/src/msgcache.c b/src/msgcache.c index 2d4b696d4..616905c53 100644 --- a/src/msgcache.c +++ b/src/msgcache.c @@ -398,6 +398,7 @@ gint msgcache_write(const gchar *cache_file, const gchar *mark_file, MsgCache *c cache->last_access = time(NULL); debug_print(_("done.\n")); + return 0; } MsgInfo *msgcache_get_msg(MsgCache *cache, guint num) -- 2.25.1