From 4edca6a80408037b4f753b44c460810a51489522 Mon Sep 17 00:00:00 2001
From: Aqua-sama <aqua@iserlohn-fortress.net>
Date: Sat, 21 Apr 2018 13:59:32 +0200
Subject: Remove unknown option parsing

---
 lib/configuration/configuration.cpp |  2 +-
 lib/configuration/configuration.h   |  2 +-
 src/commandline.cpp                 | 12 ------------
 src/commandline.h                   |  2 --
 src/main.cpp                        | 20 ++------------------
 5 files changed, 4 insertions(+), 34 deletions(-)

diff --git a/lib/configuration/configuration.cpp b/lib/configuration/configuration.cpp
index d3a8b23..01bf1c6 100644
--- a/lib/configuration/configuration.cpp
+++ b/lib/configuration/configuration.cpp
@@ -106,7 +106,7 @@ bool Configuration::read(const QString &path)
     return true;
 }
 
-bool Configuration::parse(int argc, const char **argv)
+bool Configuration::parse(int argc, char **argv)
 {
     try {
         po::store(po::parse_command_line(argc, argv, desc), vm);
diff --git a/lib/configuration/configuration.h b/lib/configuration/configuration.h
index c5e044f..5b59766 100644
--- a/lib/configuration/configuration.h
+++ b/lib/configuration/configuration.h
@@ -26,7 +26,7 @@ public:
     static QString defaultUserConfigLocation();
 
     bool read(const QString &path);
-    bool parse(int argc, const char **argv);
+    bool parse(int argc, char **argv);
 
     template <typename T>
     std::optional<T> value(const char *path) const
diff --git a/src/commandline.cpp b/src/commandline.cpp
index bb636f2..f5e479c 100644
--- a/src/commandline.cpp
+++ b/src/commandline.cpp
@@ -88,18 +88,6 @@ void CommandLine::parseCommandLine(const QCoreApplication &app)
     if(isSet(buildOption)) {
         printBuild();
     }
-
-    // create a list of unknown QCommandLineOption's
-    // parser.addOptions() takes a list, so this is a QList
-
-    for(const QString &opt : unknownOptionNames()) {
-        QCommandLineOption o(opt, "dummy desc", "dummy value");
-        unknownOptions.append(o);
-    }
-
-    // add list and reparse to set the new options
-    addOptions(unknownOptions);
-    parse(app.arguments());
 }
 
 void CommandLine::printHelp(int exitCode)
diff --git a/src/commandline.h b/src/commandline.h
index 4229ac4..cb2f334 100644
--- a/src/commandline.h
+++ b/src/commandline.h
@@ -31,8 +31,6 @@ public:
     const QCommandLineOption socketOption;
     const QCommandLineOption newWindowOption;
 
-    QList<QCommandLineOption> unknownOptions;
-
 private:
     QCoreApplication *application;
 };
diff --git a/src/main.cpp b/src/main.cpp
index 1b4d26f..52df7ac 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -25,24 +25,8 @@ int main(int argc, char **argv)
     std::shared_ptr<Configuration> config = std::make_shared<Configuration>();
     config->read(parser.value(parser.configOption));
 
-    // parse command-line overrides
-    // we assume the users knows what they're doing, so we only pass the unknown options to program_options
-    // passing any unknown options though will cause it to fail, so we need to filter out the regular options
-    // unfortunately, QCommandLineParser will only give us the unknown option
-    // names, so we need to build a list, add them as options, reparse, and then
-    // we get their values
-    if(!parser.unknownOptions.isEmpty()) {
-        int _argc = parser.unknownOptions.length() + 1;
-        const char *_argv[_argc];
-
-        // program_options requires 0 to be the program name, otherwise it seems to fail
-        _argv[0] = qUtf8Printable(app.arguments().at(0));
-
-        for(int i = 1; i < _argc; ++i) {
-            _argv[i] = qUtf8Printable(QString("--%1=%2").arg(parser.unknownOptions[i - 1].names().at(0), parser.value(parser.unknownOptions[i - 1])));
-        }
-
-        config->parse(_argc, _argv);
+    if(!parser.unknownOptionNames().isEmpty()) {
+        qDebug("config->parse: %s", config->parse(argc, argv) ? "true" : "false");
     }
 
     app.setConfiguration(config);
-- 
cgit v1.2.1