2006-12-18 [colin] 2.6.1cvs50
authorColin Leroy <colin@colino.net>
Mon, 18 Dec 2006 21:31:12 +0000 (21:31 +0000)
committerColin Leroy <colin@colino.net>
Mon, 18 Dec 2006 21:31:12 +0000 (21:31 +0000)
* src/imap.c
Fix failure to get separator on LIST "" ""
Try LIST "" "INBOX" too.

ChangeLog
PATCHSETS
configure.ac
src/imap.c

index 8ab262efaa1656501c79d2a3de960abcece6142d..9d104d3755a90391586b7c18523cf2c59391e55b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-12-18 [colin]     2.6.1cvs50
+
+       * src/imap.c
+               Fix failure to get separator on LIST "" ""
+               Try LIST "" "INBOX" too.
+
 2006-12-18 [wwp]       2.6.1cvs49
 
        * src/common/session.c
 2006-12-18 [wwp]       2.6.1cvs49
 
        * src/common/session.c
index 602eef6ab6974ea7b3b96386e6c62b8923681b8a..31796b71eec816c008e00a08a62dca5a97f73b49 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.24.2.17 -r 1.24.2.18 Makefile.am;  cvs diff -u -r 1.9.2.31 -r 1.9.2.32 src/common/defs.h;  cvs diff -u -r 1.20.2.11 -r 1.20.2.12 src/gtk/Makefile.am;  cvs diff -u -r 1.4.2.44 -r 1.4.2.45 src/gtk/about.c;  ) > 2.6.1cvs47.patchset
 ( cvs diff -u -r 1.382.2.341 -r 1.382.2.342 src/compose.c;  cvs diff -u -r 1.1.2.13 -r 1.1.2.14 src/prefs_quote.c;  ) > 2.6.1cvs48.patchset
 ( cvs diff -u -r 1.23.2.11 -r 1.23.2.12 src/common/session.c;  ) > 2.6.1cvs49.patchset
 ( cvs diff -u -r 1.24.2.17 -r 1.24.2.18 Makefile.am;  cvs diff -u -r 1.9.2.31 -r 1.9.2.32 src/common/defs.h;  cvs diff -u -r 1.20.2.11 -r 1.20.2.12 src/gtk/Makefile.am;  cvs diff -u -r 1.4.2.44 -r 1.4.2.45 src/gtk/about.c;  ) > 2.6.1cvs47.patchset
 ( cvs diff -u -r 1.382.2.341 -r 1.382.2.342 src/compose.c;  cvs diff -u -r 1.1.2.13 -r 1.1.2.14 src/prefs_quote.c;  ) > 2.6.1cvs48.patchset
 ( cvs diff -u -r 1.23.2.11 -r 1.23.2.12 src/common/session.c;  ) > 2.6.1cvs49.patchset
+( cvs diff -u -r 1.179.2.140 -r 1.179.2.141 src/imap.c;  ) > 2.6.1cvs50.patchset
index 416ad2210355e1267be16ba21d3b0f8d725984be..6692cd7ff41bcf43fa974d35d3aace7de141fa6f 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=6
 MICRO_VERSION=1
 INTERFACE_AGE=0
 BINARY_AGE=0
 MICRO_VERSION=1
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=49
+EXTRA_VERSION=50
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index edf2df37cf6f88713a4d9c482655cbf3545df9e4..dc0d851b6734a47b36f21601f26a19b0c7c02dfc 100644 (file)
@@ -2326,6 +2326,33 @@ gchar imap_get_path_separator_for_item(FolderItem *item)
        return imap_get_path_separator(imap_folder, item->path);
 }
 
        return imap_get_path_separator(imap_folder, item->path);
 }
 
+static gchar imap_refresh_path_separator(IMAPFolder *folder, const gchar *subfolder)
+{
+       IMAPSession *session = imap_session_get(FOLDER(folder));
+       clist * lep_list;
+       int r;
+       gchar separator = '\0';
+       
+       g_return_val_if_fail(session != NULL, '/');
+       r = imap_threaded_list((Folder *)folder, "", subfolder, &lep_list);
+       
+       if (r != MAILIMAP_NO_ERROR) {
+               log_warning(_("LIST failed\n"));
+               return '\0';
+       }
+
+       if (clist_count(lep_list) > 0) {
+               clistiter * iter = clist_begin(lep_list); 
+               struct mailimap_mailbox_list * mb;
+               mb = clist_content(iter);
+
+               separator = mb->mb_delimiter;
+               debug_print("got separator: %c\n", folder->last_seen_separator);
+       }
+       mailimap_list_result_free(lep_list);
+       return separator;
+}
+
 static gchar imap_get_path_separator(IMAPFolder *folder, const gchar *path)
 {
        IMAPNameSpace *namespace;
 static gchar imap_get_path_separator(IMAPFolder *folder, const gchar *path)
 {
        IMAPNameSpace *namespace;
@@ -2334,22 +2361,11 @@ static gchar imap_get_path_separator(IMAPFolder *folder, const gchar *path)
        g_return_val_if_fail(session != NULL, '/');
 
        if (folder->last_seen_separator == 0) {
        g_return_val_if_fail(session != NULL, '/');
 
        if (folder->last_seen_separator == 0) {
-               clist * lep_list;
-               int r = imap_threaded_list((Folder *)folder, "", "", &lep_list);
-               if (r != MAILIMAP_NO_ERROR) {
-                       log_warning(_("LIST failed\n"));
-                       return '/';
-               }
-               
-               if (clist_count(lep_list) > 0) {
-                       clistiter * iter = clist_begin(lep_list); 
-                       struct mailimap_mailbox_list * mb;
-                       mb = clist_content(iter);
-               
-                       folder->last_seen_separator = mb->mb_delimiter;
-                       debug_print("got separator: %c\n", folder->last_seen_separator);
-               }
-               mailimap_list_result_free(lep_list);
+               folder->last_seen_separator = imap_refresh_path_separator(folder, "");
+       }
+
+       if (folder->last_seen_separator == 0) {
+               folder->last_seen_separator = imap_refresh_path_separator(folder, "INBOX");
        }
 
        if (folder->last_seen_separator != 0) {
        }
 
        if (folder->last_seen_separator != 0) {
@@ -2357,10 +2373,6 @@ static gchar imap_get_path_separator(IMAPFolder *folder, const gchar *path)
                return folder->last_seen_separator;
        }
 
                return folder->last_seen_separator;
        }
 
-       namespace = imap_find_namespace(folder, path);
-       if (namespace && namespace->separator)
-               separator = namespace->separator;
-
        return separator;
 }
 
        return separator;
 }