diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-08-25 16:56:17 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-08-25 16:56:17 +0100 |
| commit | 7b2054e2a73844450b5b55c5788c02af671812ce (patch) | |
| tree | 5d5727a5bce89cdd32923c0c44841abd0585c8cb /src/lib/config.cc | |
| parent | c497e601934e82425efef5dc981b12818a881990 (diff) | |
| parent | 7edf8e601ed2ede5b6758840fb9d8940393cf7e2 (diff) | |
Merge master.
Diffstat (limited to 'src/lib/config.cc')
| -rw-r--r-- | src/lib/config.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc index d20536f14..7e3762587 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -42,10 +42,12 @@ #include "i18n.h" using std::vector; +using std::cout; using std::ifstream; using std::string; using std::list; using std::max; +using std::remove; using std::exception; using std::cerr; using boost::shared_ptr; @@ -215,6 +217,11 @@ Config::read () _log_types = f.optional_number_child<int> ("LogTypes").get_value_or (Log::TYPE_GENERAL | Log::TYPE_WARNING | Log::TYPE_ERROR); + list<cxml::NodePtr> his = f.node_children ("History"); + for (list<cxml::NodePtr>::const_iterator i = his.begin(); i != his.end(); ++i) { + _history.push_back ((*i)->content ()); + } + cxml::NodePtr signer = f.optional_node_child ("Signer"); dcp::CertificateChain signer_chain; if (signer) { @@ -371,6 +378,10 @@ Config::write () const root->add_child("DecryptionCertificate")->add_child_text (_decryption_certificate.certificate (true)); root->add_child("DecryptionPrivateKey")->add_child_text (_decryption_private_key); + for (vector<boost::filesystem::path>::const_iterator i = _history.begin(); i != _history.end(); ++i) { + root->add_child("History")->add_child_text (i->string ()); + } + doc.write_to_file_formatted (file(false).string ()); } @@ -416,3 +427,17 @@ Config::reset_kdm_email () "Best regards,\nDCP-o-matic" ); } + +void +Config::add_to_history (boost::filesystem::path p) +{ + /* Remove existing instances of this path in the history */ + _history.erase (remove (_history.begin(), _history.end(), p), _history.end ()); + + _history.insert (_history.begin (), p); + if (_history.size() > HISTORY_SIZE) { + _history.pop_back (); + } + + changed (); +} |
