aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers
diff options
context:
space:
mode:
Diffstat (limited to 'camel/providers')
-rw-r--r--camel/providers/imap/camel-imap-message-cache.c16
-rw-r--r--camel/providers/imap/camel-imap-message-cache.h3
2 files changed, 19 insertions, 0 deletions
diff --git a/camel/providers/imap/camel-imap-message-cache.c b/camel/providers/imap/camel-imap-message-cache.c
index 4b9b97789f..2f811eea47 100644
--- a/camel/providers/imap/camel-imap-message-cache.c
+++ b/camel/providers/imap/camel-imap-message-cache.c
@@ -94,6 +94,11 @@ cache_put (CamelImapMessageCache *cache, const char *uid, const char *key,
char *hash_key;
GPtrArray *subparts;
gpointer okey, ostream;
+ guint32 uidval;
+
+ uidval = strtoul (uid, NULL, 10);
+ if (uidval > cache->max_uid)
+ cache->max_uid = uidval;
subparts = g_hash_table_lookup (cache->parts, uid);
if (!subparts) {
@@ -193,6 +198,17 @@ camel_imap_message_cache_new (const char *path, CamelFolderSummary *summary,
return cache;
}
+/**
+ * camel_imap_message_cache_max_uid:
+ * @cache: the cache
+ *
+ * Return value: the largest (real) UID in the cache.
+ **/
+guint32
+camel_imap_message_cache_max_uid (CamelImapMessageCache *cache)
+{
+ return cache->max_uid;
+}
static void
stream_finalize (CamelObject *stream, gpointer event_data, gpointer user_data)
diff --git a/camel/providers/imap/camel-imap-message-cache.h b/camel/providers/imap/camel-imap-message-cache.h
index c9af369a56..6ddf7339c7 100644
--- a/camel/providers/imap/camel-imap-message-cache.h
+++ b/camel/providers/imap/camel-imap-message-cache.h
@@ -47,6 +47,7 @@ struct _CamelImapMessageCache {
char *path;
GHashTable *parts, *cached;
+ guint32 max_uid;
};
@@ -63,6 +64,8 @@ CamelImapMessageCache *camel_imap_message_cache_new (const char *path,
CamelFolderSummary *summ,
CamelException *ex);
+guint32 camel_imap_message_cache_max_uid (CamelImapMessageCache *cache);
+
CamelStream *camel_imap_message_cache_insert (CamelImapMessageCache *cache,
const char *uid,
const char *part_spec,