diff --git a/libs/pbd/file_utils.cc b/libs/pbd/file_utils.cc index 26900be289..511e046de3 100644 --- a/libs/pbd/file_utils.cc +++ b/libs/pbd/file_utils.cc @@ -110,14 +110,15 @@ get_files_in_directory (const std::string& directory_path, vector& resul } void -find_matching_files_in_directory (const std::string& directory, - const Glib::PatternSpec& pattern, - vector& result) +find_files_matching_pattern (vector& result, + const Searchpath& paths, + const Glib::PatternSpec& pattern) { vector tmp_files; - get_files_in_directory (directory, tmp_files); - result.reserve(tmp_files.size()); + for (vector::const_iterator i = paths.begin(); i != paths.end(); ++i) { + get_files_in_directory (*i, tmp_files); + } for (vector::iterator file_iter = tmp_files.begin(); file_iter != tmp_files.end(); @@ -133,6 +134,15 @@ find_matching_files_in_directory (const std::string& directory, result.push_back(*file_iter); } + +} + +void +find_matching_files_in_directory (const std::string& directory, + const Glib::PatternSpec& pattern, + vector& result) +{ + find_files_matching_pattern (result, directory, pattern); } void @@ -140,12 +150,7 @@ find_matching_files_in_directories (const vector& paths, const Glib::PatternSpec& pattern, vector& result) { - for (vector::const_iterator path_iter = paths.begin(); - path_iter != paths.end(); - ++path_iter) - { - find_matching_files_in_directory (*path_iter, pattern, result); - } + find_files_matching_pattern (result, paths, pattern); } void @@ -153,7 +158,7 @@ find_matching_files_in_search_path (const Searchpath& search_path, const Glib::PatternSpec& pattern, vector& result) { - find_matching_files_in_directories (search_path, pattern, result); + find_files_matching_pattern (result, search_path, pattern); } bool diff --git a/libs/pbd/pbd/file_utils.h b/libs/pbd/pbd/file_utils.h index 4e44e2fe32..3ced02f2aa 100644 --- a/libs/pbd/pbd/file_utils.h +++ b/libs/pbd/pbd/file_utils.h @@ -58,6 +58,19 @@ LIBPBD_API void get_files_in_directory (const std::string& path, std::vector& result); +/** + * Takes a Searchpath and returns all the files contained in the + * directory paths that match a particular pattern. + * + * @param result A vector in which to place the resulting matches. + * @param paths A Searchpath + * @param pattern A Glib::PatternSpec used to match the files. + */ +LIBPBD_API void +find_files_matching_pattern (std::vector& result, + const Searchpath& paths, + const Glib::PatternSpec& pattern); + /** * Takes a directory path and returns all the files in the directory * matching a particular pattern.