* src/imap.c
authorChristoph Hohmann <reboot@gmx.ch>
Tue, 2 Jul 2002 22:28:11 +0000 (22:28 +0000)
committerChristoph Hohmann <reboot@gmx.ch>
Tue, 2 Jul 2002 22:28:11 +0000 (22:28 +0000)
        better IMAP uid fetching using 'FETCH 1:* (UID)'
* src/msgcache.c
        add missing return in msgcache_write

ChangeLog.claws
configure.in
src/imap.c
src/msgcache.c

index fc8fdc1f2c78f09aee5857709f8a460fda731b7b..72178e2d3cf80e4189af03cb1d0098169f5da89a 100644 (file)
@@ -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
index 69931ad443ab2041786ef48dfd79b9b14ba8e0a0..b76ca631f5dc03be699e832f31a27bdede383c5c 100644 (file)
@@ -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
index 4a89cdc7eb14aefd38bbc4cc30a28428425b0c70..ee764c852a165e665dc9fd618bfa169b1a71da58 100644 (file)
@@ -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);
index 2d4b696d46800773e61d0536e238e2137e7c7e03..616905c539ab8e86d96c10670e50ab01ed8d8d5a 100644 (file)
@@ -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)