Improve error reporting, in particular from dcpomatic_create.
authorCarl Hetherington <cth@carlh.net>
Wed, 5 Aug 2015 17:07:37 +0000 (18:07 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 5 Aug 2015 17:07:37 +0000 (18:07 +0100)
src/lib/film.cc
src/lib/job.cc

index 3e02ca4e200128c131f6f395d9a100efd6ff91ad..5e7bab0b7d7ee7af846ed387b37f813a6f078dde 100644 (file)
@@ -926,7 +926,7 @@ Film::examine_content (shared_ptr<Content> c)
 void
 Film::examine_and_add_content (shared_ptr<Content> c)
 {
-       if (dynamic_pointer_cast<FFmpegContent> (c)) {
+       if (dynamic_pointer_cast<FFmpegContent> (c) && !_directory.empty ()) {
                run_ffprobe (c->path(0), file ("ffprobe.log"), _log);
        }
 
index 8c46b49621c4a86a8c637d114d29dacce0976c00..a266fbe07c09c8029793b40e70371efc7e66bb76 100644 (file)
@@ -84,8 +84,6 @@ Job::run_wrapper ()
                }
 
                set_error (e.what(), m);
-               set_progress (1);
-               set_state (FINISHED_ERROR);
 
        } catch (OpenFileError& e) {
 
@@ -94,18 +92,29 @@ Job::run_wrapper ()
                        String::compose (_("DCP-o-matic could not open the file %1.  Perhaps it does not exist or is in an unexpected format."), e.file().string())
                        );
 
-               set_progress (1);
-               set_state (FINISHED_ERROR);
+       } catch (boost::filesystem::filesystem_error& e) {
+
+               if (e.code() == boost::system::errc::no_such_file_or_directory) {
+                       set_error (
+                               String::compose (_("Could not open %1"), e.path1().string ()),
+                               String::compose (_("DCP-o-matic could not open the file %1.  Perhaps it does not exist or is in an unexpected format."), e.path1().string())
+                               );
+               } else {
+                       set_error (
+                               e.what (),
+                               string (_("It is not known what caused this error.")) + "  " + REPORT_PROBLEM
+                               );
+               }
 
        } catch (boost::thread_interrupted &) {
 
                set_state (FINISHED_CANCELLED);
+               /* This is the only one that is not FINISHED_ERROR; need to return */
+               return;
 
        } catch (std::bad_alloc& e) {
 
                set_error (_("Out of memory"), _("There was not enough memory to do this."));
-               set_progress (1);
-               set_state (FINISHED_ERROR);
 
        } catch (std::exception& e) {
 
@@ -114,19 +123,16 @@ Job::run_wrapper ()
                        string (_("It is not known what caused this error.")) + "  " + REPORT_PROBLEM
                        );
 
-               set_progress (1);
-               set_state (FINISHED_ERROR);
-
        } catch (...) {
 
                set_error (
                        _("Unknown error"),
                        string (_("It is not known what caused this error.")) + "  " + REPORT_PROBLEM
                        );
-
-               set_progress (1);
-               set_state (FINISHED_ERROR);
        }
+
+       set_progress (1);
+       set_state (FINISHED_ERROR);
 }
 
 /** @return true if this job is new (ie has not started running) */