Replace %c with nothing in KDM filenames if the cinema is not known.
[dcpomatic.git] / src / lib / screen.cc
index 544bce9ef76c315bf15c585ccddfff2e67ed9fc6..21d7ebf2566bccad3185601eb5325aed8c439a74 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2013-2020 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2013-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 */
 
+
 #include "screen.h"
 #include "kdm_with_metadata.h"
 #include "film.h"
 #include "cinema.h"
 #include <libxml++/libxml++.h>
-#include <boost/foreach.hpp>
 #include <boost/algorithm/string.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
 
+
+using std::list;
+using std::make_shared;
+using std::shared_ptr;
 using std::string;
 using std::vector;
-using std::list;
-using boost::shared_ptr;
 using boost::optional;
 using namespace dcpomatic;
 
+
 Screen::Screen (cxml::ConstNodePtr node)
        : KDMRecipient (node)
 {
-       BOOST_FOREACH (cxml::ConstNodePtr i, node->node_children ("TrustedDevice")) {
+       for (auto i: node->node_children ("TrustedDevice")) {
                if (boost::algorithm::starts_with(i->content(), "-----BEGIN CERTIFICATE-----")) {
                        trusted_devices.push_back (TrustedDevice(dcp::Certificate(i->content())));
                } else {
@@ -46,20 +49,22 @@ Screen::Screen (cxml::ConstNodePtr node)
        }
 }
 
+
 void
 Screen::as_xml (xmlpp::Element* parent) const
 {
        KDMRecipient::as_xml (parent);
-       BOOST_FOREACH (TrustedDevice i, trusted_devices) {
+       for (auto i: trusted_devices) {
                parent->add_child("TrustedDevice")->add_child_text(i.as_string());
        }
 }
 
+
 vector<string>
 Screen::trusted_device_thumbprints () const
 {
        vector<string> t;
-       BOOST_FOREACH (TrustedDevice i, trusted_devices) {
+       for (auto i: trusted_devices) {
                t.push_back (i.thumbprint());
        }
        return t;
@@ -79,14 +84,14 @@ kdm_for_screen (
        )
 {
        if (!screen->recipient) {
-               return KDMWithMetadataPtr();
+               return {};
        }
 
-       shared_ptr<const Cinema> cinema = screen->cinema;
+       auto cinema = screen->cinema;
        dcp::LocalTime const begin(valid_from, cinema ? cinema->utc_offset_hour() : 0, cinema ? cinema->utc_offset_minute() : 0);
        dcp::LocalTime const end  (valid_to,   cinema ? cinema->utc_offset_hour() : 0, cinema ? cinema->utc_offset_minute() : 0);
 
-       dcp::EncryptedKDM const kdm = film->make_kdm (
+       auto const kdm = film->make_kdm (
                        screen->recipient.get(),
                        screen->trusted_device_thumbprints(),
                        cpl,
@@ -100,6 +105,8 @@ kdm_for_screen (
        dcp::NameFormat::Map name_values;
        if (cinema) {
                name_values['c'] = cinema->name;
+       } else {
+               name_values['c'] = "";
        }
        name_values['s'] = screen->name;
        name_values['f'] = film->name();
@@ -107,6 +114,6 @@ kdm_for_screen (
        name_values['e'] = end.date() + " " + end.time_of_day(true, false);
        name_values['i'] = kdm.cpl_id();
 
-       return KDMWithMetadataPtr(new KDMWithMetadata(name_values, cinema.get(), cinema ? cinema->emails : list<string>(), kdm));
+       return make_shared<KDMWithMetadata>(name_values, cinema.get(), cinema ? cinema->emails : list<string>(), kdm);
 }