Move functions in pbd/clear_dir.h/cc into pbd/file_utils.h/cc
authorTim Mayberry <mojofunk@gmail.com>
Thu, 19 Jun 2014 13:00:45 +0000 (23:00 +1000)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 25 Jun 2014 16:40:10 +0000 (12:40 -0400)
libs/ardour/lv2_plugin.cc
libs/ardour/session_state.cc
libs/pbd/clear_dir.cc [deleted file]
libs/pbd/file_utils.cc
libs/pbd/pbd/clear_dir.h [deleted file]
libs/pbd/pbd/file_utils.h
libs/pbd/wscript

index a33b01cbd939a43a55284b51f21f4e719cc1e015..c754e581bdde97f3d0c46a6745660d36f8b18d19 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <boost/utility.hpp>
 
-#include "pbd/clear_dir.h"
 #include "pbd/file_utils.h"
 #include "pbd/stl_delete.h"
 #include "pbd/compose.h"
index 43d756d826675f7c7277922761bf504081d65898..a5d71181a70eaf253d8249e7b1f1d59584487865 100644 (file)
@@ -72,7 +72,6 @@
 #include "pbd/pthread_utils.h"
 #include "pbd/stacktrace.h"
 #include "pbd/convert.h"
-#include "pbd/clear_dir.h"
 #include "pbd/localtime_r.h"
 
 #include "ardour/amp.h"
diff --git a/libs/pbd/clear_dir.cc b/libs/pbd/clear_dir.cc
deleted file mode 100644 (file)
index 08c932c..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-    Copyright (C) 2012 Paul Davis 
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-*/
-
-#ifdef COMPILER_MSVC
-#include <io.h>      // Microsoft's nearest equivalent to <unistd.h>
-using PBD::readdir;
-using PBD::opendir;
-using PBD::closedir;
-#else
-#include <dirent.h>
-#include <unistd.h>
-#endif
-
-#include <string>
-#include <sys/stat.h>
-#include <errno.h>
-#include <string.h>
-
-#include <glib.h>
-#include <glib/gstdio.h>
-#include <glibmm/miscutils.h>
-
-#include "pbd/error.h"
-#include "pbd/compose.h"
-#include "pbd/clear_dir.h"
-#include "pbd/file_utils.h"
-
-#include "i18n.h"
-
-using namespace PBD;
-using namespace std;
-
-int
-remove_directory_internal (const string& dir, size_t* size, vector<string>* paths,
-                           bool just_remove_files)
-{
-       vector<string> tmp_paths;
-       struct stat statbuf;
-       int ret = 0;
-
-       get_directory_contents (dir, tmp_paths, just_remove_files, true);
-
-       for (vector<string>::const_iterator i = tmp_paths.begin();
-            i != tmp_paths.end(); ++i) {
-
-               if (g_stat (i->c_str(), &statbuf)) {
-                       continue;
-               }
-
-                if (::g_remove (i->c_str())) {
-                        error << string_compose (_("cannot remove path %1 (%2)"), *i, strerror (errno))
-                              << endmsg;
-                        ret = 1;
-                }
-
-                if (paths) {
-                        paths->push_back (Glib::path_get_basename(*i));
-                }
-
-                if (size) {
-                        *size += statbuf.st_size;
-                }
-
-       }
-
-        return ret;
-}
-
-int
-PBD::clear_directory (const string& dir, size_t* size, vector<string>* paths)
-{
-       return remove_directory_internal (dir, size, paths, true);
-}
-
-// rm -rf <dir> -- used to remove saved plugin state
-void
-PBD::remove_directory (const std::string& dir)
-{
-       remove_directory_internal (dir, 0, 0, false);
-}
index 9db71c25c0c550a0dba4a809b76ef63bf9fcba97..1101ba650458d42889ffea8fc63114fd7ac21f43 100644 (file)
@@ -404,4 +404,53 @@ exists_and_writable (const std::string & p)
        return true;
 }
 
+int
+remove_directory_internal (const string& dir, size_t* size, vector<string>* paths,
+                           bool just_remove_files)
+{
+       vector<string> tmp_paths;
+       struct stat statbuf;
+       int ret = 0;
+
+       get_directory_contents (dir, tmp_paths, just_remove_files, true);
+
+       for (vector<string>::const_iterator i = tmp_paths.begin();
+            i != tmp_paths.end(); ++i) {
+
+                if (g_stat (i->c_str(), &statbuf)) {
+                       continue;
+               }
+
+                if (::g_remove (i->c_str())) {
+                        error << string_compose (_("cannot remove path %1 (%2)"), *i, strerror (errno))
+                              << endmsg;
+                        ret = 1;
+                }
+
+                if (paths) {
+                        paths->push_back (Glib::path_get_basename(*i));
+                }
+
+                if (size) {
+                        *size += statbuf.st_size;
+                }
+
+       }
+
+        return ret;
+}
+
+int
+clear_directory (const string& dir, size_t* size, vector<string>* paths)
+{
+       return remove_directory_internal (dir, size, paths, true);
+}
+
+// rm -rf <dir> -- used to remove saved plugin state
+void
+remove_directory (const std::string& dir)
+{
+       remove_directory_internal (dir, 0, 0, false);
+}
+
 } // namespace PBD
diff --git a/libs/pbd/pbd/clear_dir.h b/libs/pbd/pbd/clear_dir.h
deleted file mode 100644 (file)
index f669b84..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-    Copyright (C) 2012 Paul Davis 
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-*/
-
-#ifndef __pbd_clear_dir_h__
-#define __pbd_clear_dir_h__
-
-#include <string>
-#include <vector>
-#include <sys/types.h>
-
-#include "pbd/libpbd_visibility.h"
-
-namespace PBD {
-        LIBPBD_API int clear_directory (const std::string&, size_t* = 0, std::vector<std::string>* = 0);
-        LIBPBD_API void remove_directory (const std::string& dir);
-}
-
-#endif /* __pbd_clear_dir_h__ */
index 1943790de6ec7746b3eab3c12cb5f4872a200090..bd9eccf240528b9498776fed5a753e7625ba25fb 100644 (file)
@@ -160,6 +160,26 @@ LIBPBD_API bool equivalent_paths (const std::string &p1, const std::string &p2);
 /// @return true if path at p exists and is writable, false otherwise
 LIBPBD_API bool exists_and_writable(const std::string & p);
 
+/**
+ * Remove all the files in a directory recursively leaving the directory
+ * structure in place.
+ * @note dir will not be removed
+ *
+ * @param dir The directory to clear of files.
+ * @param size of removed files in bytes.
+ * @param list of files that were removed.
+ */
+LIBPBD_API int clear_directory (const std::string& dir, size_t* size = 0,
+                                std::vector<std::string>* removed_files = 0);
+
+/**
+ * Remove all the contents of a directory recursively.
+ * @note dir will not be removed
+ *
+ * @param dir The directory to remove files from.
+ */
+LIBPBD_API void remove_directory (const std::string& dir);
+
 } // namespace PBD
 
 #endif
index 35f4b4c5c75ce62be6d3516c2e79992e7c864132..dc85775cbff74978a214140735f65fd3ef992d67 100644 (file)
@@ -37,7 +37,6 @@ libpbd_sources = [
     'convert.cc',
     'controllable.cc',
     'controllable_descriptor.cc',
-    'clear_dir.cc',
     'cpus.cc',
     'debug.cc',
     'enumwriter.cc',