diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2006-01-05 06:36:37 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2006-01-05 06:36:37 +0000 |
commit | 03756891e5a06b3faf2c5aea23333528912d6733 (patch) | |
tree | cdb81d1a386d6b42284cbc3505871f44bde734fc /libsylph/virtual.c | |
parent | 6262481d1f2820450c9b3671c2469f260a543927 (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/virtual.c')
-rw-r--r-- | libsylph/virtual.c | 25 |
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; } |