From: Robin Gareus Date: Sat, 5 Dec 2015 15:35:41 +0000 (+0100) Subject: elaborate on prev. commit: ignore irrelevant files in the interchange dir. X-Git-Tag: 4.5~286 X-Git-Url: https://git.carlh.net/gitweb/?a=commitdiff_plain;h=9fa4d3c77fca18ed767c5c7d365c65d06b7efc5b;p=ardour.git elaborate on prev. commit: ignore irrelevant files in the interchange dir. --- 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) {