List:Commits« Previous MessageNext Message »
From:Marc Alff Date:October 26 2010 10:12am
Subject:bzr commit into mysql-trunk-bugfixing branch (marc.alff:3289)
View as plain text  
#At file:///Users/malff/BZR_TREE/mysql-trunk-bugfixing/ based on revid:alexander.nozdrin@stripped

 3289 Marc Alff	2010-10-26 [merge]
      Merge mysql-5.5-bugteam --> mysql-trunk-bugfixing

    modified:
      include/my_getopt.h
      mysys/my_getopt.c
=== modified file 'include/my_getopt.h'
--- a/include/my_getopt.h	2010-06-11 01:30:49 +0000
+++ b/include/my_getopt.h	2010-10-25 12:30:07 +0000
@@ -39,6 +39,13 @@ C_MODE_START
 #define GET_ASK_ADDR	 128
 #define GET_TYPE_MASK	 127
 
+/**
+  Enumeration of the my_option::arg_type attributes.
+  It should be noted that for historical reasons variables with the combination
+  arg_type=NO_ARG, my_option::var_type=GET_BOOL still accepts
+  arguments. This is someone counter intuitive and care should be taken
+  if the code is refactored.
+*/
 enum get_opt_arg_type { NO_ARG, OPT_ARG, REQUIRED_ARG };
 
 struct st_typelib;

=== modified file 'mysys/my_getopt.c'
--- a/mysys/my_getopt.c	2010-09-28 15:29:26 +0000
+++ b/mysys/my_getopt.c	2010-10-26 10:11:56 +0000
@@ -360,14 +360,6 @@ int handle_options(int *argc, char ***ar
 	  }
 	  return EXIT_OPTION_DISABLED;
 	}
-	if (must_be_var && optp->arg_type == NO_ARG)
-	{
-	  if (my_getopt_print_errors)
-            my_getopt_error_reporter(ERROR_LEVEL, 
-                                     "%s: option '%s' cannot take an argument",
-                                     my_progname, optp->name);
-	  return EXIT_NO_ARGUMENT_ALLOWED;
-	}
         error= 0;
 	value= optp->var_type & GET_ASK_ADDR ?
 	  (*getopt_get_addr)(key_name, (uint) strlen(key_name), optp, &error) :
@@ -377,6 +369,11 @@ int handle_options(int *argc, char ***ar
 
 	if (optp->arg_type == NO_ARG)
 	{
+	  /*
+	    Due to historical reasons GET_BOOL var_types still accepts arguments
+	    despite the NO_ARG arg_type attribute. This can seems a bit unintuitive
+	    and care should be taken when refactoring this code.
+	  */
 	  if (optend && (optp->var_type & GET_TYPE_MASK) != GET_BOOL)
 	  {
 	    if (my_getopt_print_errors)
@@ -391,7 +388,7 @@ int handle_options(int *argc, char ***ar
 	      Set bool to 1 if no argument or if the user has used
 	      --enable-'option-name'.
 	      *optend was set to '0' if one used --disable-option
-	      */
+	    */
 	    (*argc)--;
 	    if (!optend || *optend == '1' ||
 		!my_strcasecmp(&my_charset_latin1, optend, "true"))
@@ -418,10 +415,9 @@ int handle_options(int *argc, char ***ar
 	else if (optp->arg_type == REQUIRED_ARG && !optend)
 	{
 	  /* Check if there are more arguments after this one,
-
-             Note: options loaded from config file that requires value
-             should always be in the form '--option=value'.
-           */
+       Note: options loaded from config file that requires value
+       should always be in the form '--option=value'.
+    */
 	  if (!is_cmdline_arg || !*++pos)
 	  {
 	    if (my_getopt_print_errors)

No bundle (reason: revision is a merge).
Thread
bzr commit into mysql-trunk-bugfixing branch (marc.alff:3289) Marc Alff26 Oct