summaryrefslogtreecommitdiff
path: root/libs/pbd/file_utils.cc
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2014-06-22 13:58:39 +1000
committerPaul Davis <paul@linuxaudiosystems.com>2014-06-25 12:40:10 -0400
commit26ec4038af0e84e6fe5d648c5dd1b76d19badd1f (patch)
tree68de813be6dd8e5faccb21d6201d1bad8bb75f45 /libs/pbd/file_utils.cc
parenta7ce765b0bed719f1a3df2a895e9d5732f537f0b (diff)
Use run_functor_for_paths in PBD::find_files_matching_pattern
Diffstat (limited to 'libs/pbd/file_utils.cc')
-rw-r--r--libs/pbd/file_utils.cc30
1 files changed, 11 insertions, 19 deletions
diff --git a/libs/pbd/file_utils.cc b/libs/pbd/file_utils.cc
index eb9661eab6..08a99b3355 100644
--- a/libs/pbd/file_utils.cc
+++ b/libs/pbd/file_utils.cc
@@ -182,30 +182,22 @@ get_files_in_directory (const std::string& directory_path, vector<string>& resul
return get_directory_contents (directory_path, result, true, false);
}
+static
+bool
+pattern_filter (const string& str, void *arg)
+{
+ Glib::PatternSpec* pattern = (Glib::PatternSpec*)arg;
+ return pattern->match(str);
+}
+
void
find_files_matching_pattern (vector<string>& result,
const Searchpath& paths,
const Glib::PatternSpec& pattern)
{
- vector<string> tmp_files;
-
- for (vector<string>::const_iterator i = paths.begin(); i != paths.end(); ++i) {
- get_files_in_directory (*i, tmp_files);
- }
-
- for (vector<string>::iterator file_iter = tmp_files.begin();
- file_iter != tmp_files.end();
- ++file_iter)
- {
- string filename = Glib::path_get_basename (*file_iter);
- if (!pattern.match(filename)) continue;
-
- DEBUG_TRACE (DEBUG::FileUtils,
- string_compose("Found file %1\n", *file_iter));
-
- result.push_back(*file_iter);
- }
-
+ run_functor_for_paths (result, paths, pattern_filter,
+ const_cast<Glib::PatternSpec*>(&pattern),
+ true, false, true, false);
}
void