Author: cctrieloff
Date: 2007-09-09 14:16:07 -0400 (Sun, 09 Sep 2007)
New Revision: 917
Modified:
store/trunk/cpp/lib/jrnl/jdir.cpp
store/trunk/cpp/lib/jrnl/jdir.hpp
Log:
added option to delete, to only delete sub-dirs
Modified: store/trunk/cpp/lib/jrnl/jdir.cpp
===================================================================
--- store/trunk/cpp/lib/jrnl/jdir.cpp 2007-09-09 02:02:30 UTC (rev 916)
+++ store/trunk/cpp/lib/jrnl/jdir.cpp 2007-09-09 18:16:07 UTC (rev 917)
@@ -174,19 +174,19 @@
// === delete_dir ===
void
-jdir::delete_dir() throw (jexception)
+jdir::delete_dir(bool children_only) throw (jexception)
{
- delete_dir(_dirname);
+ delete_dir(_dirname, children_only);
}
void
-jdir::delete_dir(const char* dirname) throw (jexception)
+jdir::delete_dir(const char* dirname, bool children_only) throw (jexception)
{
- delete_dir(std::string(dirname));
+ delete_dir(std::string(dirname), children_only);
}
void
-jdir::delete_dir(const std::string& dirname) throw (jexception)
+jdir::delete_dir(const std::string& dirname, bool children_only) throw (jexception)
{
struct dirent* entry;
struct stat s;
@@ -253,12 +253,14 @@
ss << "dir=\"" << dirname << "\"
errno=" << errno;
throw jexception(jerrno::JERR_JDIR_CLOSEDIR, ss.str(), "jdir",
"delete_dir");
}
- if (::rmdir(dirname.c_str()))
- {
- std::stringstream ss;
- ss << "dir=\"" << dirname << "\"
errno=" << errno;
- throw jexception(jerrno::JERR_JDIR_RMDIR, ss.str(), "jdir",
"delete_dir");
- }
+
+ if (!children_only)
+ if (::rmdir(dirname.c_str()))
+ {
+ std::stringstream ss;
+ ss << "dir=\"" << dirname << "\"
errno=" << errno;
+ throw jexception(jerrno::JERR_JDIR_RMDIR, ss.str(), "jdir",
"delete_dir");
+ }
}
Modified: store/trunk/cpp/lib/jrnl/jdir.hpp
===================================================================
--- store/trunk/cpp/lib/jrnl/jdir.hpp 2007-09-09 02:02:30 UTC (rev 916)
+++ store/trunk/cpp/lib/jrnl/jdir.hpp 2007-09-09 18:16:07 UTC (rev 917)
@@ -153,13 +153,15 @@
* contain. This is equivilent of rm -rf.
*
* FIXME: links are not handled correctly.
+ *
+ * \param children_only To only delete children.
*
* \exception The journal directory could not be opened.
* \exception The move of files from the journal directory to the created backup
* directory failed.
* \exception The directory handle could not be closed.
*/
- void delete_dir() throw (jexception);
+ void delete_dir(bool children_only = false ) throw (jexception);
/**
* \brief Delete the journal directory and all files and sub--directories that it
may
@@ -168,13 +170,14 @@
* FIXME: links are not handled correctly.
*
* \param dirname C-string containing name of directory to be deleted.
+ * \param children_only To only delete children.
*
* \exception The journal directory could not be opened.
* \exception The move of files from the journal directory to the created backup
* directory failed.
* \exception The directory handle could not be closed.
*/
- static void delete_dir(const char* dirname) throw (jexception);
+ static void delete_dir(const char* dirname, bool children_only = false) throw
(jexception);
/**
* \brief Delete the journal directory and all files and sub--directories that it
may
@@ -183,13 +186,14 @@
* FIXME: links are not handled correctly.
*
* \param dirname String containing name of directory to be deleted.
+ * \param children_only To only delete children.
*
* \exception The journal directory could not be opened.
* \exception The move of files from the journal directory to the created backup
* directory failed.
* \exception The directory handle could not be closed.
*/
- static void delete_dir(const std::string& dirname) throw (jexception);
+ static void delete_dir(const std::string& dirname, bool children_only =
false) throw (jexception);
/**
* \brief Create bakup directory that is next in sequence and move all journal
files
Show replies by date