List:Commits« Previous MessageNext Message »
From:Magne Mahre Date:October 27 2010 10:32am
Subject:bzr commit into mysql-next-mr-bugfixing branch (magne.mahre:3336) Bug#51631
View as plain text  
#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#51631Magne Mahre27 Oct