aboutsummaryrefslogtreecommitdiff
path: root/libsylph
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2006-01-05 06:36:37 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2006-01-05 06:36:37 +0000
commit03756891e5a06b3faf2c5aea23333528912d6733 (patch)
treecdb81d1a386d6b42284cbc3505871f44bde734fc /libsylph
parent6262481d1f2820450c9b3671c2469f260a543927 (diff)
fixed a bug that search folders under IMAP4 or NNTP folders couldn't be removed.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@871 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'libsylph')
-rw-r--r--libsylph/virtual.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/libsylph/virtual.c b/libsylph/virtual.c
index 5a2778d7..388e4d9c 100644
--- a/libsylph/virtual.c
+++ b/libsylph/virtual.c
@@ -102,6 +102,9 @@ static gint virtual_close (Folder *folder,
static gint virtual_scan_folder (Folder *folder,
FolderItem *item);
+static gint virtual_remove_folder (Folder *folder,
+ FolderItem *item);
+
static FolderClass virtual_class =
{
F_VIRTUAL,
@@ -131,7 +134,7 @@ static FolderClass virtual_class =
NULL,
NULL,
NULL,
- NULL,
+ virtual_remove_folder,
};
@@ -526,6 +529,24 @@ static gint virtual_close(Folder *folder, FolderItem *item)
static gint virtual_scan_folder(Folder *folder, FolderItem *item)
{
- /* do search */
+ return 0;
+}
+
+static gint virtual_remove_folder(Folder *folder, FolderItem *item)
+{
+ gchar *path;
+
+ g_return_val_if_fail(item != NULL, NULL);
+ g_return_val_if_fail(item->stype == F_VIRTUAL, -1);
+
+ path = folder_item_get_path(item);
+ if (remove_dir_recursive(path) < 0) {
+ g_warning("can't remove directory '%s'\n", path);
+ g_free(path);
+ return -1;
+ }
+
+ g_free(path);
+ folder_item_remove(item);
return 0;
}