aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/imap/camel-imap-folder.c
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2001-05-01 02:13:45 +0800
committerDan Winship <danw@src.gnome.org>2001-05-01 02:13:45 +0800
commit8ad89adf8ca7d1208473a8028036d270b6ad0b30 (patch)
tree3d7718059c99a55bac407e49852bb38c9b26eb5a /camel/providers/imap/camel-imap-folder.c
parent155fcd81538ef9aa63e6e6d4b585d5dd528b4e47 (diff)
downloadgsoc2013-evolution-8ad89adf8ca7d1208473a8028036d270b6ad0b30.tar
gsoc2013-evolution-8ad89adf8ca7d1208473a8028036d270b6ad0b30.tar.gz
gsoc2013-evolution-8ad89adf8ca7d1208473a8028036d270b6ad0b30.tar.bz2
gsoc2013-evolution-8ad89adf8ca7d1208473a8028036d270b6ad0b30.tar.lz
gsoc2013-evolution-8ad89adf8ca7d1208473a8028036d270b6ad0b30.tar.xz
gsoc2013-evolution-8ad89adf8ca7d1208473a8028036d270b6ad0b30.tar.zst
gsoc2013-evolution-8ad89adf8ca7d1208473a8028036d270b6ad0b30.zip
New-and-improved version of get_uid_set() from camel-imap-folder.c. Looks
* providers/imap/camel-imap-utils.c (imap_uid_array_to_set): New-and-improved version of get_uid_set() from camel-imap-folder.c. Looks at the summary as it goes so that if you ask for messages 5, 6, 8, and 9, and there is no message 7, then you get "5:9" instead of "5:6,8:9" * providers/imap/camel-imap-folder.c (imap_copy_messages_to): Use imap_uid_array_to_set() rather than get_uid_set(). (get_uid_set): Gone svn path=/trunk/; revision=9632
Diffstat (limited to 'camel/providers/imap/camel-imap-folder.c')
-rw-r--r--camel/providers/imap/camel-imap-folder.c39
1 files changed, 1 insertions, 38 deletions
diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c
index 9f325aae56..89ac95fea5 100644
--- a/camel/providers/imap/camel-imap-folder.c
+++ b/camel/providers/imap/camel-imap-folder.c
@@ -698,43 +698,6 @@ imap_append_message (CamelFolder *folder, CamelMimeMessage *message,
camel_imap_response_free (response);
}
-static char *
-get_uid_set (GPtrArray *uids)
-{
- /* Note: the only thing that might be good to do here is to
- not use atoi() and use strtoul() or something */
- int i, last_uid, this_uid;
- gboolean range = FALSE;
- GString *gset;
- char *set;
-
- gset = g_string_new (uids->pdata[0]);
- last_uid = atoi (uids->pdata[0]);
- for (i = 1; i < uids->len; i++) {
- this_uid = atoi (uids->pdata[i]);
- if (this_uid != last_uid + 1) {
- if (range) {
- g_string_sprintfa (gset, ":%d", last_uid);
- range = FALSE;
- }
-
- g_string_sprintfa (gset, ",%d", this_uid);
- } else {
- range = TRUE;
- }
-
- last_uid = this_uid;
- }
-
- if (range)
- g_string_sprintfa (gset, ":%d", this_uid);
-
- set = gset->str;
- g_string_free (gset, FALSE);
-
- return set;
-}
-
static void
imap_copy_messages_to (CamelFolder *source, GPtrArray *uids,
CamelFolder *destination, CamelException *ex)
@@ -753,7 +716,7 @@ imap_copy_messages_to (CamelFolder *source, GPtrArray *uids,
/* Now copy the messages */
CAMEL_IMAP_STORE_LOCK(store, command_lock);
- set = get_uid_set (uids);
+ set = imap_uid_array_to_set (source->summary, uids);
response = camel_imap_command (store, source, ex, "UID COPY %s %S",
set, destination->full_name);