From dd0f6069a536f414c5b37c786bb36dfc7fdf3d20 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 14 May 2020 20:14:52 +0200 Subject: [PATCH] Don't say 'certificate downloaded' if it failed during the read part. Backported from 8c7ad603cf0a534abe1a920b70b0daa095257d3a in v2.15.x --- src/lib/internet.cc | 12 ++++++------ src/lib/internet.h | 6 +++--- src/wx/download_certificate_panel.cc | 9 ++++++--- src/wx/download_certificate_panel.h | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/lib/internet.cc b/src/lib/internet.cc index e0af49b66..8721c1b73 100644 --- a/src/lib/internet.cc +++ b/src/lib/internet.cc @@ -79,24 +79,25 @@ get_from_url (string url, bool pasv, bool skip_pasv_ip, ScopedTemporary& temp) return optional(); } + optional -get_from_url (string url, bool pasv, bool skip_pasv_ip, function load) +get_from_url (string url, bool pasv, bool skip_pasv_ip, function (boost::filesystem::path)> load) { ScopedTemporary temp; optional e = get_from_url (url, pasv, skip_pasv_ip, temp); if (e) { return e; } - load (temp.file()); - return optional(); + return load (temp.file()); } + /** @param url URL of ZIP file. * @param file Filename within ZIP file. * @param load Function passed a (temporary) filesystem path of the unpacked file. */ optional -get_from_zip_url (string url, string file, bool pasv, bool skip_pasv_ip, function load) +get_from_zip_url (string url, string file, bool pasv, bool skip_pasv_ip, function (boost::filesystem::path)> load) { /* Download the ZIP file to temp_zip */ ScopedTemporary temp_zip; @@ -153,6 +154,5 @@ get_from_zip_url (string url, string file, bool pasv, bool skip_pasv_ip, functio zip_close (zip); temp_cert.close (); - load (temp_cert.file ()); - return optional (); + return load (temp_cert.file()); } diff --git a/src/lib/internet.h b/src/lib/internet.h index 125533b5d..da0bfc005 100644 --- a/src/lib/internet.h +++ b/src/lib/internet.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2019 Carl Hetherington + Copyright (C) 2014-2020 Carl Hetherington This file is part of DCP-o-matic. @@ -25,5 +25,5 @@ class ScopedTemporary; boost::optional get_from_url (std::string url, bool pasv, bool skip_pasv_ip, ScopedTemporary& temp); -boost::optional get_from_url (std::string url, bool pasv, bool skip_pasv_ip, boost::function load); -boost::optional get_from_zip_url (std::string url, std::string file, bool pasv, bool skip_pasv_ip, boost::function load); +boost::optional get_from_url (std::string url, bool pasv, bool skip_pasv_ip, boost::function (boost::filesystem::path)> load); +boost::optional get_from_zip_url (std::string url, std::string file, bool pasv, bool skip_pasv_ip, boost::function (boost::filesystem::path)> load); diff --git a/src/wx/download_certificate_panel.cc b/src/wx/download_certificate_panel.cc index 2f3b435ef..461c68966 100644 --- a/src/wx/download_certificate_panel.cc +++ b/src/wx/download_certificate_panel.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2018 Carl Hetherington + Copyright (C) 2014-2020 Carl Hetherington This file is part of DCP-o-matic. @@ -22,10 +22,12 @@ #include "download_certificate_panel.h" #include "download_certificate_dialog.h" #include "lib/signal_manager.h" +#include "lib/compose.hpp" #include #include #include +using std::string; using boost::function; using boost::optional; @@ -51,14 +53,15 @@ DownloadCertificatePanel::DownloadCertificatePanel (DownloadCertificateDialog* d _overall_sizer->SetSizeHints (this); } -void +optional DownloadCertificatePanel::load (boost::filesystem::path file) { try { _certificate = dcp::Certificate (dcp::file_to_string (file)); } catch (dcp::MiscError& e) { - error_dialog (this, _("Could not read certificate file."), std_to_wx(e.what())); + return String::compose(wx_to_std(_("Could not read certificate file (%1)")), e.what()); } + return optional(); } optional diff --git a/src/wx/download_certificate_panel.h b/src/wx/download_certificate_panel.h index 55594c74c..dee76c435 100644 --- a/src/wx/download_certificate_panel.h +++ b/src/wx/download_certificate_panel.h @@ -37,7 +37,7 @@ public: virtual bool ready_to_download () const; void download (); - void load (boost::filesystem::path); + boost::optional load (boost::filesystem::path); boost::optional certificate () const; protected: -- 2.30.2