update semantics of PBD::remove_directory()
authorRobin Gareus <robin@gareus.org>
Sun, 27 Sep 2015 10:44:54 +0000 (12:44 +0200)
committerRobin Gareus <robin@gareus.org>
Sun, 27 Sep 2015 10:44:54 +0000 (12:44 +0200)
Remove the directory recursively including itself. The function
is used in two places only:

* LV2Plugin::add_state() -- no change, remove tmp. state
* Session::save_as()  -- on error, remove target

In both cases removing the folder itself is correct.

libs/pbd/file_utils.cc
libs/pbd/pbd/file_utils.h
libs/pbd/test/filesystem_test.cc

index 950880c0bf832ac177e235fca217298f8da0663f..3cd0689f4bf2bbae03d77e12cacab552ba6074f1 100644 (file)
@@ -476,6 +476,7 @@ void
 remove_directory (const std::string& dir)
 {
        remove_directory_internal (dir, 0, 0, false);
+       g_rmdir (dir.c_str());
 }
 
 string
index b55b9fd4e4131396d5b57a4fb64af7095e7d29e2..876f1148d508896fdbcdb20fa91dfb688e86a9c4 100644 (file)
@@ -235,9 +235,9 @@ LIBPBD_API int clear_directory (const std::string& dir, size_t* size = 0,
 
 /**
  * Remove all the contents of a directory recursively.
- * @note dir will not be removed
+ * including the dir itself (`rm -rf $dir`)
  *
- * @param dir The directory to remove files from.
+ * @param dir The directory to remove recursively
  */
 LIBPBD_API void remove_directory (const std::string& dir);
 
index 1eaba5496873af78d3b9b97bbd5f1c7636cba7bd..ccd4deab658c5362f768afcba0dd0adf105f476a 100644 (file)
@@ -335,14 +335,7 @@ FilesystemTest::testRemoveDirectory ()
 
        PBD::remove_directory (output_dir_path);
 
-       // doesn't actually remove directory though...just contents
-       CPPUNIT_ASSERT (Glib::file_test (output_dir_path, Glib::FILE_TEST_IS_DIR));
-
-       files_in_output_dir.clear ();
-
-       PBD::get_paths (files_in_output_dir, output_dir_path, false, true);
-
-       CPPUNIT_ASSERT (files_in_output_dir.size () == 0);
+       CPPUNIT_ASSERT (!Glib::file_test (output_dir_path, Glib::FILE_TEST_EXISTS));
 }
 
 void