From cb3a60493620e5965de72d34fe0c0d2cce7ec037 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Thu, 19 Jun 2014 23:00:45 +1000 Subject: [PATCH] Move functions in pbd/clear_dir.h/cc into pbd/file_utils.h/cc --- libs/ardour/lv2_plugin.cc | 1 - libs/ardour/session_state.cc | 1 - libs/pbd/clear_dir.cc | 96 ------------------------------------ libs/pbd/file_utils.cc | 49 ++++++++++++++++++ libs/pbd/pbd/clear_dir.h | 34 ------------- libs/pbd/pbd/file_utils.h | 20 ++++++++ libs/pbd/wscript | 1 - 7 files changed, 69 insertions(+), 133 deletions(-) delete mode 100644 libs/pbd/clear_dir.cc delete mode 100644 libs/pbd/pbd/clear_dir.h diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index a33b01cbd9..c754e581bd 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -31,7 +31,6 @@ #include -#include "pbd/clear_dir.h" #include "pbd/file_utils.h" #include "pbd/stl_delete.h" #include "pbd/compose.h" diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 43d756d826..a5d71181a7 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -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 index 08c932c339..0000000000 --- a/libs/pbd/clear_dir.cc +++ /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 // Microsoft's nearest equivalent to -using PBD::readdir; -using PBD::opendir; -using PBD::closedir; -#else -#include -#include -#endif - -#include -#include -#include -#include - -#include -#include -#include - -#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* paths, - bool just_remove_files) -{ - vector tmp_paths; - struct stat statbuf; - int ret = 0; - - get_directory_contents (dir, tmp_paths, just_remove_files, true); - - for (vector::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* paths) -{ - return remove_directory_internal (dir, size, paths, true); -} - -// rm -rf -- used to remove saved plugin state -void -PBD::remove_directory (const std::string& dir) -{ - remove_directory_internal (dir, 0, 0, false); -} diff --git a/libs/pbd/file_utils.cc b/libs/pbd/file_utils.cc index 9db71c25c0..1101ba6504 100644 --- a/libs/pbd/file_utils.cc +++ b/libs/pbd/file_utils.cc @@ -404,4 +404,53 @@ exists_and_writable (const std::string & p) return true; } +int +remove_directory_internal (const string& dir, size_t* size, vector* paths, + bool just_remove_files) +{ + vector tmp_paths; + struct stat statbuf; + int ret = 0; + + get_directory_contents (dir, tmp_paths, just_remove_files, true); + + for (vector::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* paths) +{ + return remove_directory_internal (dir, size, paths, true); +} + +// rm -rf -- 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 index f669b84485..0000000000 --- a/libs/pbd/pbd/clear_dir.h +++ /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 -#include -#include - -#include "pbd/libpbd_visibility.h" - -namespace PBD { - LIBPBD_API int clear_directory (const std::string&, size_t* = 0, std::vector* = 0); - LIBPBD_API void remove_directory (const std::string& dir); -} - -#endif /* __pbd_clear_dir_h__ */ diff --git a/libs/pbd/pbd/file_utils.h b/libs/pbd/pbd/file_utils.h index 1943790de6..bd9eccf240 100644 --- a/libs/pbd/pbd/file_utils.h +++ b/libs/pbd/pbd/file_utils.h @@ -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* 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 diff --git a/libs/pbd/wscript b/libs/pbd/wscript index 35f4b4c5c7..dc85775cbf 100644 --- a/libs/pbd/wscript +++ b/libs/pbd/wscript @@ -37,7 +37,6 @@ libpbd_sources = [ 'convert.cc', 'controllable.cc', 'controllable_descriptor.cc', - 'clear_dir.cc', 'cpus.cc', 'debug.cc', 'enumwriter.cc', -- 2.30.2