X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fconfig.cc;h=18c792223b020ff1c195f2fb0eca7c1b06e1f84e;hp=94595f9f8ac88a78d7a9df26035dac5539799b7e;hb=b5cd81225e49fc983777dbf15a38e262fb2dd9f6;hpb=f5bd787fb71466a6187050086b2890b9b0ac9294 diff --git a/src/lib/config.cc b/src/lib/config.cc index 94595f9f8..18c792223 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -608,7 +608,7 @@ try _export.read(f.optional_node_child("Export")); } catch (...) { - if (have_existing("config.xml") || have_existing("cinemas.xml") || have_existing("dkdm_recipients.xml")) { + if (have_existing("config.xml")) { backup (); /* We have a config file but it didn't load */ FailedToLoad(LoadFailure::CONFIG); @@ -618,7 +618,7 @@ catch (...) { _signer_chain = create_certificate_chain (); /* And similar for decryption of KDMs */ _decryption_chain = create_certificate_chain (); - write (); + write_config(); } @@ -626,9 +626,15 @@ void Config::read_cinemas() { if (boost::filesystem::exists (_cinemas_file)) { - cxml::Document f ("Cinemas"); - f.read_file (_cinemas_file); - read_cinemas (f); + try { + cxml::Document f("Cinemas"); + f.read_file(_cinemas_file); + read_cinemas(f); + } catch (...) { + backup(); + FailedToLoad(LoadFailure::CINEMAS); + write_cinemas(); + } } } @@ -637,9 +643,15 @@ void Config::read_dkdm_recipients() { if (boost::filesystem::exists (_dkdm_recipients_file)) { - cxml::Document f ("DKDMRecipients"); - f.read_file (_dkdm_recipients_file); - read_dkdm_recipients (f); + try { + cxml::Document f("DKDMRecipients"); + f.read_file(_dkdm_recipients_file); + read_dkdm_recipients(f); + } catch (...) { + backup(); + FailedToLoad(LoadFailure::DKDM_RECIPIENTS); + write_dkdm_recipients(); + } } }