X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fcinema_kdms.cc;h=2b6a51e4179a95ac3d0b3727cdcdd641be96963b;hb=c07b9340d12e6b724719ad6fd885102ab1a6d84e;hp=605e414a0c4db08042b8da174286f5cbb3bb706d;hpb=67a68bd971ebe1b35daa3f75873b4ccb53c00ba0;p=dcpomatic.git diff --git a/src/lib/cinema_kdms.cc b/src/lib/cinema_kdms.cc index 605e414a0..2b6a51e41 100644 --- a/src/lib/cinema_kdms.cc +++ b/src/lib/cinema_kdms.cc @@ -179,15 +179,17 @@ CinemaKDMs::write_zip_files ( /** Email one ZIP file per cinema to the cinema. * @param cinema_kdms KDMS to email. - * @param name_format Format of filename to use. - * @param name_values Values to substitute into \p name_format. + * @param container_name_format Format of folder / ZIP to use. + * @param filename_format Format of filenames to use. + * @param name_values Values to substitute into \p container_name_format and \p filename_format. * @param cpl_name Name of the CPL that the KDMs are for. * @param log Log to write email session transcript to, or 0. */ void CinemaKDMs::email ( list cinema_kdms, - dcp::NameFormat name_format, + dcp::NameFormat container_name_format, + dcp::NameFormat filename_format, dcp::NameFormat::Map name_values, string cpl_name, shared_ptr log @@ -206,9 +208,10 @@ CinemaKDMs::email ( name_values['c'] = i.cinema->name; - boost::filesystem::path zip_file = boost::filesystem::temp_directory_path (); - zip_file /= boost::filesystem::unique_path().string() + ".zip"; - i.make_zip_file (zip_file, name_format, name_values); + boost::filesystem::path zip_file = boost::filesystem::temp_directory_path() / boost::filesystem::unique_path(); + boost::filesystem::create_directories (zip_file); + zip_file /= container_name_format.get(name_values, ".zip"); + i.make_zip_file (zip_file, filename_format, name_values); string subject = config->kdm_subject(); boost::algorithm::replace_all (subject, "$CPL_NAME", cpl_name); @@ -237,13 +240,14 @@ CinemaKDMs::email ( email.add_bcc (config->kdm_bcc ()); } - email.add_attachment (zip_file, name_format.get(name_values, ".zip"), "application/zip"); + email.add_attachment (zip_file, container_name_format.get(name_values, ".zip"), "application/zip"); Config* c = Config::instance (); try { email.send (c->mail_server(), c->mail_port(), c->mail_user(), c->mail_password()); } catch (...) { + boost::filesystem::remove (zip_file); if (log) { log->log ("Email content follows", LogEntry::TYPE_DEBUG_EMAIL); log->log (email.email(), LogEntry::TYPE_DEBUG_EMAIL); @@ -253,6 +257,8 @@ CinemaKDMs::email ( throw; } + boost::filesystem::remove (zip_file); + if (log) { log->log ("Email content follows", LogEntry::TYPE_DEBUG_EMAIL); log->log (email.email(), LogEntry::TYPE_DEBUG_EMAIL);