aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers
diff options
context:
space:
mode:
authorPeter Williams <peterw@ximian.com>2002-08-10 06:01:44 +0800
committerPeter Williams <peterw@src.gnome.org>2002-08-10 06:01:44 +0800
commitf75520757a7b645cdaa34a339210a6329d818b78 (patch)
tree358db8a131b1f2210fb6ffff1133afc4e3d69733 /camel/providers
parent9dc535310a4512255d05185c26bf2f08fb3c1507 (diff)
downloadgsoc2013-evolution-f75520757a7b645cdaa34a339210a6329d818b78.tar.gz
gsoc2013-evolution-f75520757a7b645cdaa34a339210a6329d818b78.tar.zst
gsoc2013-evolution-f75520757a7b645cdaa34a339210a6329d818b78.zip
New function, generate a UID that has better chances of being unique.
2002-08-02 Peter Williams <peterw@ximian.com> * providers/imap/camel-imap-folder.c (get_temp_uid): New function, generate a UID that has better chances of being unique. (imap_append_offline): Use it here. (imap_transfer_offline): And here. svn path=/trunk/; revision=17757
Diffstat (limited to 'camel/providers')
-rw-r--r--camel/providers/imap/camel-imap-folder.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c
index 5f1cab5293..020e0e3edd 100644
--- a/camel/providers/imap/camel-imap-folder.c
+++ b/camel/providers/imap/camel-imap-folder.c
@@ -1052,6 +1052,23 @@ imap_expunge_uids_resyncing (CamelFolder *folder, GPtrArray *uids, CamelExceptio
CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
}
+static gchar *
+get_temp_uid (void)
+{
+ gchar *res;
+
+ static int counter = 0;
+ G_LOCK_DEFINE_STATIC (lock);
+
+ G_LOCK (lock);
+ res = g_strdup_printf ("tempuid-%lx-%d",
+ (unsigned long) time (NULL),
+ counter++);
+ G_UNLOCK (lock);
+
+ return res;
+}
+
static void
imap_append_offline (CamelFolder *folder, CamelMimeMessage *message,
const CamelMessageInfo *info, char **appended_uid,
@@ -1062,10 +1079,7 @@ imap_append_offline (CamelFolder *folder, CamelMimeMessage *message,
CamelFolderChangeInfo *changes;
char *uid;
- /* We could keep a separate counter, but this one works fine. */
- CAMEL_IMAP_STORE_LOCK (imap_store, command_lock);
- uid = g_strdup_printf ("append-%d", imap_store->command++);
- CAMEL_IMAP_STORE_UNLOCK (imap_store, command_lock);
+ uid = get_temp_uid ();
camel_imap_summary_add_offline (folder->summary, uid, message, info);
CAMEL_IMAP_FOLDER_LOCK (folder, cache_lock);
@@ -1273,8 +1287,7 @@ imap_transfer_offline (CamelFolder *source, GPtrArray *uids,
for (i = 0; i < uids->len; i++) {
uid = uids->pdata[i];
- destuid = g_strdup_printf ("copy-%s:%s:%d", source->full_name, uid,
- store->command++);
+ destuid = get_temp_uid ();
mi = camel_folder_summary_uid (source->summary, uid);
g_return_if_fail (mi != NULL);