Fix build on old GCC.
[libdcp.git] / tools / dcpverify.cc
index c484516e54c5ebe8f42c63631eaf92ef9d33a2b8..f29393ed2baac88cfa45980cefabbb19dcb43e81 100644 (file)
@@ -37,7 +37,6 @@
 #include <boost/bind.hpp>
 #include <boost/optional.hpp>
 #include <boost/filesystem.hpp>
-#include <boost/foreach.hpp>
 #include <getopt.h>
 #include <iostream>
 #include <cstdlib>
@@ -57,6 +56,7 @@ help (string n)
             << "  -V, --version           show libdcp version\n"
             << "  -h, --help              show this help\n"
             << "  --ignore-missing-assets don't give errors about missing assets\n"
+            << "  --ignore-bv21-smpte     don't give the SMPTE Bv2.1 error about a DCP not being SMPTE\n"
             << "  -q, --quiet             don't report progress\n";
 }
 
@@ -86,6 +86,7 @@ main (int argc, char* argv[])
        dcp::init ();
 
        bool ignore_missing_assets = false;
+       bool ignore_bv21_smpte = false;
        bool quiet = false;
 
        int option_index = 0;
@@ -94,11 +95,12 @@ main (int argc, char* argv[])
                        { "version", no_argument, 0, 'V' },
                        { "help", no_argument, 0, 'h' },
                        { "ignore-missing-assets", no_argument, 0, 'A' },
+                       { "ignore-bv21-smpte", no_argument, 0, 'B' },
                        { "quiet", no_argument, 0, 'q' },
                        { 0, 0, 0, 0 }
                };
 
-               int c = getopt_long (argc, argv, "VhAq", long_options, &option_index);
+               int c = getopt_long (argc, argv, "VhABq", long_options, &option_index);
 
                if (c == -1) {
                        break;
@@ -114,6 +116,9 @@ main (int argc, char* argv[])
                case 'A':
                        ignore_missing_assets = true;
                        break;
+               case 'B':
+                       ignore_bv21_smpte = true;
+                       break;
                case 'q':
                        quiet = true;
                        break;
@@ -132,17 +137,23 @@ main (int argc, char* argv[])
 
        vector<boost::filesystem::path> directories;
        directories.push_back (argv[optind]);
-       list<dcp::VerificationNote> notes = dcp::verify (directories, bind(&stage, quiet, _1, _2), bind(&progress), "xsd");
+       auto notes = dcp::verify (directories, bind(&stage, quiet, _1, _2), bind(&progress));
        dcp::filter_notes (notes, ignore_missing_assets);
 
        bool failed = false;
-       BOOST_FOREACH (dcp::VerificationNote i, notes) {
+       for (auto i: notes) {
+               if (ignore_bv21_smpte && i.code() == dcp::VerificationNote::Code::INVALID_STANDARD) {
+                       continue;
+               }
                switch (i.type()) {
-               case dcp::VerificationNote::VERIFY_ERROR:
+               case dcp::VerificationNote::Type::ERROR:
                        cout << "Error: " << note_to_string(i) << "\n";
                        failed = true;
                        break;
-               case dcp::VerificationNote::VERIFY_WARNING:
+               case dcp::VerificationNote::Type::BV21_ERROR:
+                       cout << "Bv2.1 error: " << note_to_string(i) << "\n";
+                       break;
+               case dcp::VerificationNote::Type::WARNING:
                        cout << "Warning: " << note_to_string(i) << "\n";
                        break;
                }