about summary refs log tree commit diff
path: root/src/libutil
diff options
context:
space:
mode:
Diffstat (limited to 'src/libutil')
-rw-r--r--src/libutil/config.cc6
-rw-r--r--src/libutil/config.hh6
2 files changed, 9 insertions, 3 deletions
diff --git a/src/libutil/config.cc b/src/libutil/config.cc
index 14c4cca031bb..d46ca65a3863 100644
--- a/src/libutil/config.cc
+++ b/src/libutil/config.cc
@@ -152,7 +152,7 @@ void BaseSetting<T>::convertToArg(Args & args, const std::string & category)
         .longName(name)
         .description(description)
         .arity(1)
-        .handler([=](std::vector<std::string> ss) { set(ss[0]); })
+        .handler([=](std::vector<std::string> ss) { overriden = true; set(ss[0]); })
         .category(category);
 }
 
@@ -201,12 +201,12 @@ template<> void BaseSetting<bool>::convertToArg(Args & args, const std::string &
     args.mkFlag()
         .longName(name)
         .description(description)
-        .handler([=](std::vector<std::string> ss) { value = true; })
+        .handler([=](std::vector<std::string> ss) { override(true); })
         .category(category);
     args.mkFlag()
         .longName("no-" + name)
         .description(description)
-        .handler([=](std::vector<std::string> ss) { value = false; })
+        .handler([=](std::vector<std::string> ss) { override(false); })
         .category(category);
 }
 
diff --git a/src/libutil/config.hh b/src/libutil/config.hh
index 99850c1cdfd5..9a32af528ec7 100644
--- a/src/libutil/config.hh
+++ b/src/libutil/config.hh
@@ -142,6 +142,12 @@ public:
 
     void set(const std::string & str) override;
 
+    virtual void override(const T & v)
+    {
+        overriden = true;
+        value = v;
+    }
+
     std::string to_string() override;
 
     void convertToArg(Args & args, const std::string & category) override;