summaryrefslogtreecommitdiff
path: root/src/lib/config.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-08-25 16:56:17 +0100
committerCarl Hetherington <cth@carlh.net>2014-08-25 16:56:17 +0100
commit7b2054e2a73844450b5b55c5788c02af671812ce (patch)
tree5d5727a5bce89cdd32923c0c44841abd0585c8cb /src/lib/config.cc
parentc497e601934e82425efef5dc981b12818a881990 (diff)
parent7edf8e601ed2ede5b6758840fb9d8940393cf7e2 (diff)
Merge master.
Diffstat (limited to 'src/lib/config.cc')
-rw-r--r--src/lib/config.cc25
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 ();
+}