Tidy up careful_string_filter and add some extra transliterations.
[dcpomatic.git] / src / lib / writer.cc
index 8b51eb58759a1364ed9af4fc80ff388401b164e1..3aca2ab89c96328445907dbbd88ae64156b722ac 100644 (file)
@@ -629,6 +629,9 @@ Writer::finish (boost::filesystem::path output_dcp)
        for (auto i: film()->content_versions()) {
                cv.push_back (dcp::ContentVersion(i));
        }
+       if (cv.empty()) {
+               cv = { dcp::ContentVersion("1") };
+       }
        cpl->set_content_versions (cv);
 
        cpl->set_full_content_title_text (film()->name());
@@ -689,14 +692,11 @@ Writer::finish (boost::filesystem::path output_dcp)
                throw InvalidSignerError (reason);
        }
 
-       dcp.write_xml (
-               issuer,
-               creator,
-               dcp::LocalTime().as_string(),
-               film()->dcp_name(),
-               signer,
-               Config::instance()->dcp_metadata_filename_format()
-               );
+       dcp.set_issuer(issuer);
+       dcp.set_creator(creator);
+       dcp.set_annotation_text(film()->dcp_name());
+
+       dcp.write_xml (signer, Config::instance()->dcp_metadata_filename_format());
 
        LOG_GENERAL (
                N_("Wrote %1 FULL, %2 FAKE, %3 REPEAT, %4 pushed to disk"), _full_written, _fake_written, _repeat_written, _pushed_to_disk
@@ -710,13 +710,17 @@ void
 Writer::write_cover_sheet (boost::filesystem::path output_dcp)
 {
        auto const cover = film()->file("COVER_SHEET.txt");
-       auto f = fopen_boost (cover, "w");
+       dcp::File f(cover, "w");
        if (!f) {
                throw OpenFileError (cover, errno, OpenFileError::WRITE);
        }
 
        auto text = Config::instance()->cover_sheet ();
        boost::algorithm::replace_all (text, "$CPL_NAME", film()->name());
+       auto cpls = film()->cpls();
+       if (!cpls.empty()) {
+               boost::algorithm::replace_all (text, "$CPL_FILENAME", cpls[0].cpl_file.filename().string());
+       }
        boost::algorithm::replace_all (text, "$TYPE", film()->dcp_content_type()->pretty_name());
        boost::algorithm::replace_all (text, "$CONTAINER", film()->container()->container_nickname());
 
@@ -774,8 +778,7 @@ Writer::write_cover_sheet (boost::filesystem::path output_dcp)
 
        boost::algorithm::replace_all (text, "$LENGTH", length);
 
-       checked_fwrite (text.c_str(), text.length(), f, cover);
-       fclose (f);
+       f.checked_write(text.c_str(), text.length());
 }