diff options
author | Robin Gareus <robin@gareus.org> | 2015-12-05 16:35:41 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-12-05 16:35:41 +0100 |
commit | 9fa4d3c77fca18ed767c5c7d365c65d06b7efc5b (patch) | |
tree | a78f606b4a2833cc6feebcd546e8c79fcd8ae7a3 /libs/ardour/session_directory.cc | |
parent | a2b7a8ccab474f9ae9a50c2c96f42909378081cb (diff) |
elaborate on prev. commit: ignore irrelevant files in the interchange dir.
Diffstat (limited to 'libs/ardour/session_directory.cc')
-rw-r--r-- | libs/ardour/session_directory.cc | 18 |
1 files 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<std::string> entries (dir.begin(), dir.end()); + std::list<std::string> 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) { |