From 38c6848b30cb1908171f2b4628e345fbf6727b39 Mon Sep 17 00:00:00 2001 From: Pierre Ossman <ossman@cendio.se> Date: Fri, 18 Sep 2020 10:44:32 +0200 Subject: Tolerate specifying -BoolParam 0 and similar This is needed by vncserver which doesn't know which parameters are boolean, and it cannot use the -Param=Value form as that isn't tolerated by the Xorg code. --- vncviewer/vncviewer.cxx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'vncviewer/vncviewer.cxx') diff --git a/vncviewer/vncviewer.cxx b/vncviewer/vncviewer.cxx index d4dd3063..77ba3d3f 100644 --- a/vncviewer/vncviewer.cxx +++ b/vncviewer/vncviewer.cxx @@ -556,6 +556,26 @@ int main(int argc, char** argv) } for (int i = 1; i < argc;) { + /* We need to resolve an ambiguity for booleans */ + if (argv[i][0] == '-' && i+1 < argc) { + VoidParameter *param; + + param = Configuration::getParam(&argv[i][1]); + if ((param != NULL) && + (dynamic_cast<BoolParameter*>(param) != NULL)) { + if ((strcasecmp(argv[i+1], "0") == 0) || + (strcasecmp(argv[i+1], "1") == 0) || + (strcasecmp(argv[i+1], "true") == 0) || + (strcasecmp(argv[i+1], "false") == 0) || + (strcasecmp(argv[i+1], "yes") == 0) || + (strcasecmp(argv[i+1], "no") == 0)) { + param->setParam(argv[i+1]); + i += 2; + continue; + } + } + } + if (Configuration::setParam(argv[i])) { i++; continue; -- cgit v1.2.3