+ if (!boost::filesystem::exists (directory)) {
+ boost::filesystem::create_directories (directory);
+ }
+
+ _directory = boost::filesystem::canonical (_directory);
+}
+
+template<class T> void
+survivable_error (bool keep_going, dcp::DCP::ReadErrors* errors, T const & e)
+{
+ if (keep_going) {
+ if (errors) {
+ errors->push_back (shared_ptr<T> (new T (e)));
+ }
+ } else {
+ throw e;
+ }