From 6933fb8a30cf17ae90394fca5114b8e600ef2cfd Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Sun, 23 Apr 2006 08:48:19 +0000 Subject: Folder deletion. --- src/net/maildir/maildirFolder.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/net/maildir/maildirFolder.cpp') diff --git a/src/net/maildir/maildirFolder.cpp b/src/net/maildir/maildirFolder.cpp index 7e596382..dc89f131 100644 --- a/src/net/maildir/maildirFolder.cpp +++ b/src/net/maildir/maildirFolder.cpp @@ -242,6 +242,42 @@ void maildirFolder::create(const int /* type */) } +void maildirFolder::destroy() +{ + ref store = m_store.acquire(); + + if (!store) + throw exceptions::illegal_state("Store disconnected"); + else if (isOpen()) + throw exceptions::illegal_state("Folder is open"); + + // Delete 'folder' and '.folder.directory' directories + utility::fileSystemFactory* fsf = platformDependant::getHandler()->getFileSystemFactory(); + + ref rootDir = fsf->create + (maildirUtils::getFolderFSPath(store, m_path, maildirUtils::FOLDER_PATH_ROOT)); + ref contDir = fsf->create + (maildirUtils::getFolderFSPath(store, m_path, maildirUtils::FOLDER_PATH_CONTAINER)); + + try + { + maildirUtils::recursiveFSDelete(rootDir); + maildirUtils::recursiveFSDelete(contDir); + } + catch (std::exception&) + { + // Ignore exception: anyway, we can't recover from this... + } + + // Notify folder deleted + events::folderEvent event + (thisRef().dynamicCast (), + events::folderEvent::TYPE_DELETED, m_path, m_path); + + notifyFolder(event); +} + + const bool maildirFolder::exists() { ref store = m_store.acquire(); -- cgit