src_folder = msginfo->folder->folder;
num = folder->copy_msg(folder, dest, msginfo);
-
+
if (num != -1) {
+ /* CLAWS */
+ g_assert(src_folder);
+ g_assert(src_folder->remove_msg);
src_folder->remove_msg(src_folder,
msginfo->folder,
msginfo->msgnum);
gint first);
static void news_delete_all_articles (FolderItem *item);
+static gint news_remove_msg (Folder *folder,
+ FolderItem *item,
+ gint num);
Folder *news_folder_new(const gchar *name, const gchar *path)
{
folder->get_msg_list = news_get_article_list;
folder->fetch_msg = news_fetch_msg;
folder->scan = news_scan_group;
+ folder->remove_msg = news_remove_msg;
}
static Session *news_session_new(const gchar *server, gushort port,
return 0;
}
+static gint news_remove_msg(Folder *folder, FolderItem *item, gint num)
+{
+ gchar *file;
+
+ g_return_val_if_fail(item != NULL, -1);
+
+ file = news_fetch_msg(folder, item, num);
+ g_return_val_if_fail(file != NULL, -1);
+
+ if (unlink(file) < 0) {
+ FILE_OP_ERROR(file, "unlink");
+ g_free(file);
+ return -1;
+ }
+
+ g_free(file);
+ return 0;
+}
+
static gint news_get_article(NNTPSession *session, gint num, gchar *filename)
{
return news_get_article_cmd(session, "ARTICLE", num, filename);