+2003-07-26 [christoph] 0.9.3claws57
+
+ * sync with 0.9.3cvs18
+ see ChangeLog 2003-07-24
+
2003-07-26 [christoph] 0.9.3claws56
* sync with 0.9.3cvs17
return 0;
}
-void folder_item_close(FolderItem *item)
+gint folder_item_close(FolderItem *item)
{
GSList *mlist, *cur;
+ Folder *folder;
- g_return_if_fail(item != NULL);
+ g_return_val_if_fail(item != NULL, -1);
if (item->new_msgs) {
folder_item_update_freeze();
folder_item_write_cache(item);
folder_item_update(item, F_ITEM_UPDATE_MSGCNT);
+
+ item->opened = FALSE;
+ folder = item->folder;
+
+ if (folder->klass->close == NULL)
+ return 0;
+
+ return folder->klass->close(folder, item);
}
gint folder_item_scan_full(FolderItem *item, gboolean filtering)
const gchar *name);
gint (*remove_folder) (Folder *folder,
FolderItem *item);
+ gint (*close) (Folder *folder,
+ FolderItem *item);
gint (*get_num_list) (Folder *folder,
FolderItem *item,
GSList **list);
gchar *folder_item_get_path (FolderItem *item);
gint folder_item_open (FolderItem *item);
-void folder_item_close (FolderItem *item);
+gint folder_item_close (FolderItem *item);
gint folder_item_scan (FolderItem *item);
void folder_item_scan_foreach (GHashTable *table);
MsgInfo *folder_item_get_msginfo (FolderItem *item,
MsgInfo *msginfo);
gchar *folder_item_get_cache_file (FolderItem *item);
gchar *folder_item_get_mark_file (FolderItem *item);
-gchar * folder_item_get_identifier(FolderItem * item);
+gchar * folder_item_get_identifier (FolderItem * item);
GHashTable *folder_persist_prefs_new (Folder *folder);
void folder_persist_prefs_free (GHashTable *pptable);
static gboolean imap_is_msg_changed(Folder * folder,
FolderItem * item, MsgInfo * msginfo);
+static gint imap_close(Folder * folder, FolderItem * item);
+
static void imap_scan_tree(Folder * folder);
static gint imap_create_tree(Folder * folder);
IMAPSet set,
gchar *sub_cmd);
static gint imap_cmd_expunge (IMAPSession *sock);
+static gint imap_cmd_close (IMAPSession *session);
static gint imap_cmd_ok (IMAPSession *session,
GPtrArray *argbuf);
imap_create_folder,
imap_rename_folder,
imap_remove_folder,
+ imap_close,
imap_get_num_list,
NULL,
NULL,
return FALSE;
}
+gint imap_close(Folder *folder, FolderItem *item)
+{
+ gint ok;
+ IMAPSession *session;
+
+ g_return_val_if_fail(folder != NULL, -1);
+
+ session = imap_session_get(folder);
+ if (!session) return -1;
+
+ if (session->mbox) {
+ ok = imap_cmd_close(session);
+ if (ok != IMAP_SUCCESS)
+ log_warning(_("can't close folder\n"));
+
+ g_free(session->mbox);
+ session->mbox = NULL;
+
+ return ok;
+ }
+
+ return 0;
+}
+
void imap_scan_tree(Folder *folder)
{
FolderItem *item;
return IMAP_SUCCESS;
}
+static gint imap_cmd_close(IMAPSession *session)
+{
+ gint ok;
+
+ imap_gen_send(session, "CLOSE");
+ if ((ok = imap_cmd_ok(session, NULL)) != IMAP_SUCCESS)
+ log_warning(_("error while imap command: CLOSE\n"));
+
+ return ok;
+}
+
static gint imap_cmd_ok(IMAPSession *session, GPtrArray *argbuf)
{
gint ok = IMAP_SUCCESS;
mbox_create_folder,
mbox_rename_folder,
mbox_remove_folder,
+ NULL,
mbox_get_num_list,
NULL,
NULL,
mh_create_folder,
mh_rename_folder,
mh_remove_folder,
+ NULL,
mh_get_num_list,
NULL,
NULL,
NULL,
NULL,
NULL,
+ NULL,
news_get_num_list,
NULL,
NULL,