From e3ab20ee90cfe1c823a01a545cc0944433e4ad7a Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Sat, 22 Jul 2006 15:16:28 +0000 Subject: Fixed DO_OPTION_OPT so that the '=' is no longer required in long options. (The value is, as the name implies, optional.) This fixes bug #1526483. svn-id: r23561 --- base/commandLine.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'base') diff --git a/base/commandLine.cpp b/base/commandLine.cpp index 70f06031a7..8372b976fb 100644 --- a/base/commandLine.cpp +++ b/base/commandLine.cpp @@ -261,12 +261,15 @@ void registerDefaults() { // Use this for options which have an *optional* value #define DO_OPTION_OPT(shortCmd, longCmd, defaultVal) \ - if (isLongCmd ? (!memcmp(s+2, longCmd"=", sizeof(longCmd"=") - 1)) : (tolower(s[1]) == shortCmd)) { \ + if (isLongCmd ? (!strcmp(s+2, longCmd) || !memcmp(s+2, longCmd"=", sizeof(longCmd"=") - 1)) : (tolower(s[1]) == shortCmd)) { \ s += 2; \ - if (isLongCmd) \ - s += sizeof(longCmd"=") - 1; \ + if (isLongCmd) { \ + s += sizeof(longCmd) - 1; \ + if (*s == '=') \ + s++; \ + } \ const char *option = s; \ - if (*s == '\0') { option = s2; i++; } \ + if (*s == '\0' && !isLongCmd) { option = s2; i++; } \ if (!option) option = defaultVal; \ if (option) settings[longCmd] = option; -- cgit v1.2.3