projects
/
claws.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* src/imap.c
[claws.git]
/
src
/
imap.c
diff --git
a/src/imap.c
b/src/imap.c
index edddafd5e767aa0e6d99924b16adc2a6f1711fd6..bcd4a6fd11a2c4015512e11f130da8cfc1f88b93 100644
(file)
--- a/
src/imap.c
+++ b/
src/imap.c
@@
-682,6
+682,8
@@
static gint imap_do_copy(Folder *folder, FolderItem *dest, MsgInfo *msginfo,
{
gchar *destdir;
IMAPSession *session;
{
gchar *destdir;
IMAPSession *session;
+ gint messages, recent, unseen;
+ guint32 uid_next, uid_validity;
gint ok;
g_return_val_if_fail(folder != NULL, -1);
gint ok;
g_return_val_if_fail(folder != NULL, -1);
@@
-697,6
+699,14
@@
static gint imap_do_copy(Folder *folder, FolderItem *dest, MsgInfo *msginfo,
return -1;
}
return -1;
}
+ ok = imap_status(session, IMAP_FOLDER(folder), dest->path,
+ &messages, &recent, &uid_next, &uid_validity, &unseen);
+ statusbar_pop_all();
+ if (ok != IMAP_SUCCESS) {
+ g_warning(_("can't copy message\n"));
+ return -1;
+ }
+
destdir = imap_get_real_path(IMAP_FOLDER(folder), dest->path);
if (remove_source)
destdir = imap_get_real_path(IMAP_FOLDER(folder), dest->path);
if (remove_source)
@@
-720,7
+730,7
@@
static gint imap_do_copy(Folder *folder, FolderItem *dest, MsgInfo *msginfo,
statusbar_pop_all();
if (ok == IMAP_SUCCESS)
statusbar_pop_all();
if (ok == IMAP_SUCCESS)
- return
0
;
+ return
uid_next
;
else
return -1;
}
else
return -1;
}
@@
-802,9
+812,12
@@
gint imap_move_msg(Folder *folder, FolderItem *dest, MsgInfo *msginfo)
ret = imap_add_msg(folder, dest, srcfile, FALSE);
g_free(srcfile);
ret = imap_add_msg(folder, dest, srcfile, FALSE);
g_free(srcfile);
- if (ret != -1)
- ret = folder_item_remove_msg(msginfo->folder, msginfo->msgnum);
-
+ if (ret != -1) {
+ if(folder_item_remove_msg(msginfo->folder, msginfo->msgnum)) {
+ ret = -1;
+ }
+ }
+
return ret;
}
return ret;
}
@@
-3064,6
+3077,9
@@
MsgInfo *imap_fetch_msginfo (Folder *folder, FolderItem *item, gint num)
IMAPSession *session;
GString *str;
MsgInfo *msginfo;
IMAPSession *session;
GString *str;
MsgInfo *msginfo;
+ gint ok, exists = 0, recent = 0, unseen = 0;
+ guint32 uid_validity = 0;
+ guint32 uid = 0;
g_return_val_if_fail(folder != NULL, NULL);
g_return_val_if_fail(item != NULL, NULL);
g_return_val_if_fail(folder != NULL, NULL);
g_return_val_if_fail(item != NULL, NULL);
@@
-3073,6
+3089,11
@@
MsgInfo *imap_fetch_msginfo (Folder *folder, FolderItem *item, gint num)
session = imap_session_get(folder);
g_return_val_if_fail(session != NULL, NULL);
session = imap_session_get(folder);
g_return_val_if_fail(session != NULL, NULL);
+ ok = imap_select(session, IMAP_FOLDER(folder), item->path,
+ &exists, &recent, &unseen, &uid_validity);
+ if (ok != IMAP_SUCCESS)
+ return NULL;
+
if (imap_cmd_envelope(SESSION(session)->sock, num, num)
!= IMAP_SUCCESS) {
log_warning(_("can't get envelope\n"));
if (imap_cmd_envelope(SESSION(session)->sock, num, num)
!= IMAP_SUCCESS) {
log_warning(_("can't get envelope\n"));