Skip to content

Commit

Permalink
Fix handling of bool on/off arguments
Browse files Browse the repository at this point in the history
These two values were overlooked in the look-ahead list and hence did
not work reliably.
  • Loading branch information
CendioOssman committed Jan 10, 2025
1 parent e97e225 commit 714f2a9
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
2 changes: 2 additions & 0 deletions common/rfb/Configuration.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,8 @@ int Configuration::handleArg(int argc, char* argv[], int index)
// FIXME: Should not duplicate the list of values here
if ((strcasecmp(argv[index+1], "0") == 0) ||
(strcasecmp(argv[index+1], "1") == 0) ||
(strcasecmp(argv[index+1], "on") == 0) ||
(strcasecmp(argv[index+1], "off") == 0) ||
(strcasecmp(argv[index+1], "true") == 0) ||
(strcasecmp(argv[index+1], "false") == 0) ||
(strcasecmp(argv[index+1], "yes") == 0) ||
Expand Down
12 changes: 6 additions & 6 deletions tests/unit/configargs.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -263,47 +263,47 @@ static void test_bool()

// bool argument (single)
boolparam.setParam(true);
argv = {"prog", "-boolparam", "false", "true"};
argv = {"prog", "-boolparam", "off", "on"};
ret = rfb::Configuration::handleParamArg(argv.size(),
(char**)argv.data(), 1);
ASSERT_EQ_I(ret, 2);
ASSERT_EQ_I(boolparam, false);

// bool argument (double)
boolparam.setParam(true);
argv = {"prog", "--boolparam", "false", "true"};
argv = {"prog", "--boolparam", "off", "on"};
ret = rfb::Configuration::handleParamArg(argv.size(),
(char**)argv.data(), 1);
ASSERT_EQ_I(ret, 2);
ASSERT_EQ_I(boolparam, false);

// bool argument equals (single)
boolparam.setParam(true);
argv = {"prog", "-boolparam=false", "true"};
argv = {"prog", "-boolparam=off", "on"};
ret = rfb::Configuration::handleParamArg(argv.size(),
(char**)argv.data(), 1);
ASSERT_EQ_I(ret, 1);
ASSERT_EQ_I(boolparam, false);

// bool argument equals (double)
boolparam.setParam(true);
argv = {"prog", "--boolparam=false", "true"};
argv = {"prog", "--boolparam=off", "on"};
ret = rfb::Configuration::handleParamArg(argv.size(),
(char**)argv.data(), 1);
ASSERT_EQ_I(ret, 1);
ASSERT_EQ_I(boolparam, false);

// bool bad argument (single)
boolparam.setParam(false);
argv = {"prog", "-boolparam", "foo", "false"};
argv = {"prog", "-boolparam", "foo", "off"};
ret = rfb::Configuration::handleParamArg(argv.size(),
(char**)argv.data(), 1);
ASSERT_EQ_I(ret, 1);
ASSERT_EQ_I(boolparam, true);

// bool bad argument (double)
boolparam.setParam(false);
argv = {"prog", "--boolparam", "foo", "false"};
argv = {"prog", "--boolparam", "foo", "off"};
ret = rfb::Configuration::handleParamArg(argv.size(),
(char**)argv.data(), 1);
ASSERT_EQ_I(ret, 1);
Expand Down

0 comments on commit 714f2a9

Please sign in to comment.