From 4edca6a80408037b4f753b44c460810a51489522 Mon Sep 17 00:00:00 2001 From: Aqua-sama 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 std::optional 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 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 config = std::make_shared(); 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