{
gchar *destdir;
IMAPSession *session;
+ gint messages, recent, unseen;
+ guint32 uid_next, uid_validity;
gint ok;
g_return_val_if_fail(folder != NULL, -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)
statusbar_pop_all();
if (ok == IMAP_SUCCESS)
- return 0;
+ return uid_next;
else
return -1;
}
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;
}
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);
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"));