while (n < 100 && exists(add_number(path_to_copy, n))) {
++n;
}
- copy_file(path_to_copy, add_number(path_to_copy, n));
+ boost::system::error_code ec;
+ copy_file(path_to_copy, add_number(path_to_copy, n), ec);
};
/* Make a backup copy of any config.xml, cinemas.xml, dkdm_recipients.xml that we might be about
* and decide to overwrite it with a new one (possibly losing important details in the corrupted
* file). But we might as well back up the other files while we're about it.
*/
- try {
- /* This uses the State::write_path stuff so, e.g. for a current version 2.16 we might copy
- * ~/.config/dcpomatic2/2.16/config.xml to ~/.config/dcpomatic2/2.16/config.xml.1
- */
- copy_adding_number (config_write_file());
- /* These do not use State::write_path, so whatever path is in the Config we will copy
- * adding a number.
- */
- copy_adding_number (_cinemas_file);
- copy_adding_number (_dkdm_recipients_file);
- } catch (...) {}
+ /* This uses the State::write_path stuff so, e.g. for a current version 2.16 we might copy
+ * ~/.config/dcpomatic2/2.16/config.xml to ~/.config/dcpomatic2/2.16/config.xml.1
+ */
+ copy_adding_number (config_write_file());
+
+ /* These do not use State::write_path, so whatever path is in the Config we will copy
+ * adding a number.
+ */
+ copy_adding_number (_cinemas_file);
+ copy_adding_number (_dkdm_recipients_file);
}
void
}
}
catch (...) {
- if (have_existing ("config.xml")) {
+ if (have_existing("config.xml") || have_existing("cinemas.xml") || have_existing("dkdm_recipients.xml")) {
backup ();
/* We have a config file but it didn't load */
FailedToLoad ();
*/
+#include "lib/cinema.h"
#include "lib/config.h"
#include "test.h"
#include <boost/test/unit_test.hpp>
#include <fstream>
+using std::list;
using std::ofstream;
+using std::make_shared;
using std::string;
using boost::optional;
BOOST_REQUIRE (!boost::filesystem::exists(dir / "2.16" / "cinemas.xml"));
}
+
+BOOST_AUTO_TEST_CASE (config_keep_cinemas_if_making_new_config)
+{
+ boost::filesystem::path dir = "build/test/config_keep_cinemas_if_making_new_config";
+ Config::override_path = dir;
+ Config::drop ();
+ boost::filesystem::remove_all (dir);
+ boost::filesystem::create_directories (dir);
+
+ Config::instance()->write();
+
+ Config::instance()->add_cinema(make_shared<Cinema>("My Great Cinema", list<string>(), "", 0, 0));
+ Config::instance()->write();
+
+ boost::filesystem::copy_file (dir / "cinemas.xml", dir / "backup_for_test.xml");
+
+ Config::drop ();
+ boost::filesystem::remove (dir / "2.16" / "config.xml");
+ Config::instance();
+
+ check_text_file (dir / "backup_for_test.xml", dir / "cinemas.xml.1");
+}
+