aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/local/camel-spool-store.c
diff options
context:
space:
mode:
Diffstat (limited to 'camel/providers/local/camel-spool-store.c')
-rw-r--r--camel/providers/local/camel-spool-store.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/camel/providers/local/camel-spool-store.c b/camel/providers/local/camel-spool-store.c
index 998c97597c..c10c0f252d 100644
--- a/camel/providers/local/camel-spool-store.c
+++ b/camel/providers/local/camel-spool-store.c
@@ -34,6 +34,7 @@
#include "camel-spool-folder.h"
#include "camel-exception.h"
#include "camel-url.h"
+#include "camel-private.h"
#define d(x)
@@ -186,14 +187,24 @@ get_folder_info (CamelStore *store, const char *top,
{
CamelFolderInfo *fi = NULL;
CamelService *service = (CamelService *)store;
+ CamelFolder *folder;
- if (top == NULL || strcmp(top, "/INBOX") == 0) {
+ if (top == NULL || strcmp(top, "INBOX") == 0) {
/* FIXME: if the folder is opened we could look it up? */
fi = g_malloc0(sizeof(*fi));
- fi->full_name = "/INBOX";
+ fi->full_name = "INBOX";
fi->name = "INBOX";
fi->url = g_strdup_printf("spool:%s#%s", service->url->path, fi->name);
- fi->unread_message_count = -1;
+
+ CAMEL_STORE_LOCK(store, cache_lock);
+ folder = g_hash_table_lookup(store->folders, fi->full_name);
+ if (folder)
+ fi->unread_message_count = camel_folder_get_message_count(folder);
+ else
+ fi->unread_message_count = -1;
+ CAMEL_STORE_UNLOCK(store, cache_lock);
+
+ camel_folder_info_build_path(fi, '/');
}
return fi;