diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/dcp_content.cc | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/lib/dcp_content.cc b/src/lib/dcp_content.cc index e2b19fb8e..442b5bd40 100644 --- a/src/lib/dcp_content.cc +++ b/src/lib/dcp_content.cc @@ -50,6 +50,7 @@ using std::cout; using std::dynamic_pointer_cast; +using std::exception; using std::function; using std::list; using std::make_shared; @@ -197,16 +198,20 @@ DCPContent::read_sub_directory (boost::filesystem::path p) using namespace boost::filesystem; LOG_GENERAL ("DCPContent::read_sub_directory reads %1", p.string()); - for (auto i: directory_iterator(p)) { - if (is_regular_file(i.path())) { - LOG_GENERAL ("Inside there's regular file %1", i.path().string()); - add_path (i.path()); - } else if (is_directory(i.path()) && i.path().filename() != ".AppleDouble") { - LOG_GENERAL ("Inside there's directory %1", i.path().string()); - read_sub_directory (i.path()); - } else { - LOG_GENERAL("Ignoring %1 from inside: status is %2", i.path().string(), static_cast<int>(status(i.path()).type())); + try { + for (auto i: directory_iterator(p)) { + if (is_regular_file(i.path())) { + LOG_GENERAL ("Inside there's regular file %1", i.path().string()); + add_path (i.path()); + } else if (is_directory(i.path()) && i.path().filename() != ".AppleDouble") { + LOG_GENERAL ("Inside there's directory %1", i.path().string()); + read_sub_directory (i.path()); + } else { + LOG_GENERAL("Ignoring %1 from inside: status is %2", i.path().string(), static_cast<int>(status(i.path()).type())); + } } + } catch (exception& e) { + LOG_GENERAL("Failed to iterate over %1: %2", p.string(), e.what()); } } |
