#At file:///export/home/tmp/x/mysql-next-mr-bugfixing-51631/ based on revid:magne.mahre@stripped
3336 Magne Mahre 2010-10-27
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)
modified:
mysys/my_getopt.c
=== modified file 'mysys/my_getopt.c'
--- a/mysys/my_getopt.c 2010-09-28 15:30:47 +0000
+++ b/mysys/my_getopt.c 2010-10-27 10:32:44 +0000
@@ -606,6 +606,25 @@ static char *check_struct_option(char *c
}
}
+
+/**
+ 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
@@ -633,7 +652,7 @@ static int setval(const struct my_option
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);
Attachment: [text/bzr-bundle] bzr/magne.mahre@oracle.com-20101027103244-iijd3glsxftl9273.bundle
| Thread |
|---|
| • bzr commit into mysql-next-mr-bugfixing branch (magne.mahre:3336) Bug#51631 | Magne Mahre | 27 Oct |