From 9fa4d3c77fca18ed767c5c7d365c65d06b7efc5b Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 5 Dec 2015 16:35:41 +0100 Subject: [PATCH] elaborate on prev. commit: ignore irrelevant files in the interchange dir. --- libs/ardour/session_directory.cc | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/libs/ardour/session_directory.cc b/libs/ardour/session_directory.cc index 46c4bf024a..ab6d4a56dc 100644 --- a/libs/ardour/session_directory.cc +++ b/libs/ardour/session_directory.cc @@ -91,8 +91,6 @@ SessionDirectory::old_sound_path () const return Glib::build_filename (m_root_path, old_sound_dir_name); } -static bool leading_dot (const std::string& value) { return value.at(0) == '.'; } - const std::string SessionDirectory::sources_root () const { @@ -142,10 +140,20 @@ SessionDirectory::sources_root () const try { Glib::Dir dir(sources_root_path); - std::list entries (dir.begin(), dir.end()); + std::list entries; - // filter out dirs starting with a dot. e.g ".DS_Store" - entries.remove_if (leading_dot); + for (Glib::DirIterator di = dir.begin(); di != dir.end(); di++) { + // ignore hidden files (eg. OS X ".DS_Store") + if ((*di).at(0) == '.') { + continue; + } + // and skip regular files (eg. Win Thumbs.db) + string fullpath = Glib::build_filename (sources_root_path, *di); + if (!Glib::file_test (fullpath, Glib::FILE_TEST_IS_DIR)) { + continue; + } + entries.push_back(*di); + } if (entries.size() == 1) { if (entries.front() != legalized_root) {