X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fsession_directory.cc;h=c52fe1aeb5c30e72389f8ac348fa643a818caae3;hb=9bf40bde3aed831791108bfccc4b1e10b071afdc;hp=d783ae22f2e5a742a3842eaae5572433b0a0fa61;hpb=03518b90a2484cb4382a59588755055665b9853b;p=ardour.git diff --git a/libs/ardour/session_directory.cc b/libs/ardour/session_directory.cc index d783ae22f2..c52fe1aeb5 100644 --- a/libs/ardour/session_directory.cc +++ b/libs/ardour/session_directory.cc @@ -24,12 +24,13 @@ #include "pbd/error.h" #include "pbd/compose.h" #include "pbd/file_utils.h" +#include "pbd/openuri.h" #include "ardour/directory_names.h" #include "ardour/session_directory.h" #include "ardour/utils.h" -#include "i18n.h" +#include "pbd/i18n.h" namespace ARDOUR { @@ -140,7 +141,20 @@ SessionDirectory::sources_root () const try { Glib::Dir dir(sources_root_path); - std::list entries (dir.begin(), dir.end()); + std::list entries; + + 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) { @@ -149,8 +163,8 @@ SessionDirectory::sources_root () const root_cache[m_root_path] = Glib::build_filename (sources_root_path, entries.front()); } else if (entries.size() > 1) { - printf ("found %zu folderin interchange!\n", entries.size()); - PBD::fatal << string_compose (_("The session's interchange dir is tainted. There is more than one folder in '%1.'. Please remove extra subdirs to reduce possible file ambiguties."), sources_root_path) << endmsg; + PBD::open_folder (sources_root_path); + PBD::fatal << string_compose (_("The session's interchange dir is tainted.\nThere is more than one folder in '%1'.\nPlease remove extra subdirs to reduce possible filename ambiguties."), sources_root_path) << endmsg; assert (0); // not reached } } catch (Glib::FileError) {