summaryrefslogtreecommitdiff
path: root/mysys/my_getopt.c
diff options
context:
space:
mode:
authorMagne Mahre <magne.mahre@oracle.com>2011-01-10 15:18:20 +0100
committerMagne Mahre <magne.mahre@oracle.com>2011-01-10 15:18:20 +0100
commitd690da668ee7b46d50afc28dd8076682523ecfa4 (patch)
tree60e359df6aab4674ec7031de6fde9ce2034315f2 /mysys/my_getopt.c
parent04823e3329ec17579848c8558975e4d538191d0e (diff)
downloadmariadb-git-d690da668ee7b46d50afc28dd8076682523ecfa4.tar.gz
Bug#51631 general-log flag doesn't accept "on" as a value in
the my.cnf, works as command Different parsing mechanisms are used for command line/my.cnf options and the SQL commands. The former only accepted numeric arguments, and regarded all numbers different from 0 as 'true'. Any other argument was parsed as 'false' . This patch adds the words 'true' and 'on' as valid truth values for boolean option arguments. A test case is not provided, as the fix is simple and does not warrant a separate test file (no existing suitable test file was found) (backported from mysql-trunk)
Diffstat (limited to 'mysys/my_getopt.c')
-rw-r--r--mysys/my_getopt.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c
index 5e66d2fc189..51c45ff1309 100644
--- a/mysys/my_getopt.c
+++ b/mysys/my_getopt.c
@@ -602,6 +602,24 @@ static char *check_struct_option(char *cur_arg, char *key_name)
}
}
+/**
+ Parse a boolean command line argument
+
+ "ON", "TRUE" and "1" will return true,
+ other values will return false.
+
+ @param[in] argument The value argument
+ @return boolean value
+*/
+static my_bool get_bool_argument(const char *argument)
+{
+ if (!my_strcasecmp(&my_charset_latin1, argument, "true") ||
+ !my_strcasecmp(&my_charset_latin1, argument, "on"))
+ return 1;
+ else
+ return (my_bool) atoi(argument);
+}
+
/*
function: setval
@@ -629,7 +647,7 @@ static int setval(const struct my_option *opts, void *value, char *argument,
switch ((opts->var_type & GET_TYPE_MASK)) {
case GET_BOOL: /* If argument differs from 0, enable option, else disable */
- *((my_bool*) value)= (my_bool) atoi(argument) != 0;
+ *((my_bool*) value)= get_bool_argument(argument);
break;
case GET_INT:
*((int*) value)= (int) getopt_ll(argument, opts, &err);