diff --git a/client/mysql.cc b/client/mysql.cc
index 73067700656..154695aa9e5 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -759,7 +759,7 @@ static int get_options(int argc, char **argv)
   opt_max_allowed_packet= *mysql_params->p_max_allowed_packet;
   opt_net_buffer_length= *mysql_params->p_net_buffer_length;
 
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, 0)))
+  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   *mysql_params->p_max_allowed_packet= opt_max_allowed_packet;
diff --git a/client/mysqladmin.c b/client/mysqladmin.c
index e2843685d50..3bc11ec0fb0 100644
--- a/client/mysqladmin.c
+++ b/client/mysqladmin.c
@@ -254,7 +254,7 @@ int main(int argc,char *argv[])
   mysql_init(&mysql);
   load_defaults("my",load_default_groups,&argc,&argv);
   save_argv = argv;				/* Save for free_defaults */
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, 0)))
+  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
   {
     free_defaults(save_argv);
     exit(ho_error);
diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc
index 93e0b98b1e5..7c3d22c4900 100644
--- a/client/mysqlbinlog.cc
+++ b/client/mysqlbinlog.cc
@@ -559,7 +559,7 @@ static int parse_args(int *argc, char*** argv)
 
   result_file = stdout;
   load_defaults("my",load_default_groups,argc,argv);
-  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   return 0;
diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c
index 718b92da466..1c5638f3c52 100644
--- a/client/mysqlcheck.c
+++ b/client/mysqlcheck.c
@@ -273,7 +273,7 @@ static int get_options(int *argc, char ***argv)
 
   load_defaults("my", load_default_groups, argc, argv);
 
-  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, 0)))
+  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   if (!what_to_do)
diff --git a/client/mysqldump.c b/client/mysqldump.c
index c0ef07a7670..6dad8182b87 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -413,7 +413,7 @@ static int get_options(int *argc, char ***argv)
   md_result_file= stdout;
   load_defaults("my",load_default_groups,argc,argv);
 
-  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, 0)))
+  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   *mysql_params->p_max_allowed_packet= opt_max_allowed_packet;
diff --git a/client/mysqlimport.c b/client/mysqlimport.c
index 751379591ff..ca53b74c119 100644
--- a/client/mysqlimport.c
+++ b/client/mysqlimport.c
@@ -206,7 +206,7 @@ static int get_options(int *argc, char ***argv)
 {
   int ho_error;
 
-  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, 0)))
+  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   if (enclosed && opt_enclosed)
diff --git a/client/mysqlmanager-pwgen.c b/client/mysqlmanager-pwgen.c
index dc845008ce0..57d91b52f49 100644
--- a/client/mysqlmanager-pwgen.c
+++ b/client/mysqlmanager-pwgen.c
@@ -95,7 +95,7 @@ int parse_args(int argc, char** argv)
 {
   int ho_error;
 
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   return 0;
diff --git a/client/mysqlmanagerc.c b/client/mysqlmanagerc.c
index 78485427473..0001a0266e6 100644
--- a/client/mysqlmanagerc.c
+++ b/client/mysqlmanagerc.c
@@ -133,7 +133,7 @@ int parse_args(int argc, char **argv)
   load_defaults("my",load_default_groups,&argc,&argv);
   default_argv= argv;
 
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   return 0;
diff --git a/client/mysqlshow.c b/client/mysqlshow.c
index cabe55cd95e..1a9aec02955 100644
--- a/client/mysqlshow.c
+++ b/client/mysqlshow.c
@@ -261,7 +261,7 @@ get_options(int *argc,char ***argv)
 {
   int ho_error;
 
-  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, 0)))
+  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
     exit(ho_error);
   
   if (tty_password)
diff --git a/client/mysqltest.c b/client/mysqltest.c
index df54b60dc97..2ec07692a4d 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -2062,7 +2062,7 @@ int parse_args(int argc, char **argv)
   load_defaults("my",load_default_groups,&argc,&argv);
   default_argv= argv;
 
-  if ((handle_options(&argc, &argv, my_long_options, get_one_option, 0)))
+  if ((handle_options(&argc, &argv, my_long_options, get_one_option)))
     exit(1);
 
   if (argc > 1)
diff --git a/extra/my_print_defaults.c b/extra/my_print_defaults.c
index 515e816f473..f8a7995432b 100644
--- a/extra/my_print_defaults.c
+++ b/extra/my_print_defaults.c
@@ -100,7 +100,7 @@ static int get_options(int *argc,char ***argv)
 {
   int ho_error;
 
-  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   if (*argc < 1)
diff --git a/extra/mysql_install.c b/extra/mysql_install.c
index ab44e1a055b..e2783f906b9 100644
--- a/extra/mysql_install.c
+++ b/extra/mysql_install.c
@@ -218,7 +218,7 @@ static int parse_args(int argc, char **argv)
 {
   int ho_error;
 
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   return 0;
diff --git a/extra/mysql_waitpid.c b/extra/mysql_waitpid.c
index 0894d81a5ae..c228cc52c8b 100644
--- a/extra/mysql_waitpid.c
+++ b/extra/mysql_waitpid.c
@@ -67,7 +67,7 @@ int main(int argc, char *argv[])
 
   progname= argv[0];
 
-  if (handle_options(&argc, &argv, my_long_options, get_one_option, NULL))
+  if (handle_options(&argc, &argv, my_long_options, get_one_option))
     exit(-1);
   if (!argv[0] || !argv[1] || (pid= atoi(argv[0])) <= 0 ||
       (t= atoi(argv[1])) <= 0)
diff --git a/extra/perror.c b/extra/perror.c
index 212b313ade4..b4aeaf00671 100644
--- a/extra/perror.c
+++ b/extra/perror.c
@@ -145,7 +145,7 @@ static int get_options(int *argc,char ***argv)
 {
   int ho_error;
 
-  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   if (!*argc && !print_all_codes)
diff --git a/extra/resolve_stack_dump.c b/extra/resolve_stack_dump.c
index 8b72ab1d864..c54f17a186e 100644
--- a/extra/resolve_stack_dump.c
+++ b/extra/resolve_stack_dump.c
@@ -121,7 +121,7 @@ static int parse_args(int argc, char **argv)
 {
   int ho_error;
 
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   /*
diff --git a/extra/resolveip.c b/extra/resolveip.c
index 23ea34abc42..d3caa9e1d45 100644
--- a/extra/resolveip.c
+++ b/extra/resolveip.c
@@ -90,7 +90,7 @@ static int get_options(int *argc,char ***argv)
 {
   int ho_error;
 
-  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   if (*argc == 0)
diff --git a/include/my_getopt.h b/include/my_getopt.h
index f5b847f7dda..e602773e181 100644
--- a/include/my_getopt.h
+++ b/include/my_getopt.h
@@ -50,15 +50,15 @@ struct my_option
   int        app_type;                  /* To be used by an application */
 };
 
-extern char *disabled_my_option;
-extern my_bool my_getopt_print_errors;
-
 typedef my_bool (* my_get_one_option) (int, const struct my_option *, char * );
 typedef void (* my_error_reporter) (enum loglevel level, const char *format, ... );
 
+extern char *disabled_my_option;
+extern my_bool my_getopt_print_errors;
+extern my_error_reporter my_getopt_error_reporter;
+
 extern int handle_options (int *argc, char ***argv, 
-			   const struct my_option *longopts, my_get_one_option, 
-                           my_error_reporter );
+			   const struct my_option *longopts, my_get_one_option);
 extern void my_print_help(const struct my_option *options);
 extern void my_print_variables(const struct my_option *options);
 
diff --git a/isam/isamchk.c b/isam/isamchk.c
index 8603b436841..daa9464eb4f 100644
--- a/isam/isamchk.c
+++ b/isam/isamchk.c
@@ -670,7 +670,7 @@ static void get_options(register int *argc, register char ***argv)
   if (isatty(fileno(stdout)))
     testflag|=T_WRITE_LOOP;
 
-  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   if (*argc == 0)
diff --git a/isam/pack_isam.c b/isam/pack_isam.c
index 59594ccc929..b2e21afc743 100644
--- a/isam/pack_isam.c
+++ b/isam/pack_isam.c
@@ -353,7 +353,7 @@ static void get_options(int *argc, char ***argv)
 {
   int ho_error;
 
-  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   my_progname= argv[0][0];
diff --git a/myisam/mi_test1.c b/myisam/mi_test1.c
index 88e6c5c89d3..8ea97c8e489 100644
--- a/myisam/mi_test1.c
+++ b/myisam/mi_test1.c
@@ -643,7 +643,7 @@ static void get_options(int argc, char *argv[])
 {
   int ho_error;
 
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   return;
diff --git a/myisam/myisam_ftdump.c b/myisam/myisam_ftdump.c
index 35182bc8abb..838f90feae5 100644
--- a/myisam/myisam_ftdump.c
+++ b/myisam/myisam_ftdump.c
@@ -66,7 +66,7 @@ int main(int argc,char *argv[])
   struct { MI_INFO *info; } aio0, *aio=&aio0; /* for GWS_IN_USE */
 
   MY_INIT(argv[0]);
-  if (error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL))
+  if (error=handle_options(&argc, &argv, my_long_options, get_one_option))
     exit(error);
   if (count || dump)
     verbose=0;
diff --git a/myisam/myisamchk.c b/myisam/myisamchk.c
index e8e85345897..5377ecc18a5 100644
--- a/myisam/myisamchk.c
+++ b/myisam/myisamchk.c
@@ -677,7 +677,7 @@ static void get_options(register int *argc,register char ***argv)
   if (isatty(fileno(stdout)))
     check_param.testflag|=T_WRITE_LOOP;
 
-  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   /* If using repair, then update checksum if one uses --update-state */
diff --git a/myisam/myisampack.c b/myisam/myisampack.c
index 51f8ad1bb11..872fcb49faf 100644
--- a/myisam/myisampack.c
+++ b/myisam/myisampack.c
@@ -350,7 +350,7 @@ static void get_options(int *argc,char ***argv)
   if (isatty(fileno(stdout)))
     write_loop=1;
 
-  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   if (!*argc)
diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c
index f9df4afb55d..71f8819756a 100644
--- a/mysys/my_getopt.c
+++ b/mysys/my_getopt.c
@@ -22,6 +22,9 @@
 #include <mysys_err.h>
 #include <my_getopt.h>
 
+static void default_reporter(enum loglevel level, const char *format, ...);
+my_error_reporter my_getopt_error_reporter= &default_reporter;
+
 static int findopt(char *optpat, uint length,
 		   const struct my_option **opt_res,
 		   char **ffname);
@@ -56,7 +59,8 @@ char *disabled_my_option= (char*) "0";
 
 my_bool my_getopt_print_errors= 1;
 
-void default_reporter(enum loglevel level, const char *format, ...)
+static void default_reporter(enum loglevel level __attribute__((unused)),
+                             const char *format, ...)
 {
   va_list args;
   va_start(args, format);
@@ -76,8 +80,7 @@ void default_reporter(enum loglevel level, const char *format, ...)
 
 int handle_options(int *argc, char ***argv, 
 		   const struct my_option *longopts,
-                   my_get_one_option get_one_option, 
-                   my_error_reporter reporter) 
+                   my_get_one_option get_one_option)
 {
   uint opt_found, argvpos= 0, length, i;
   my_bool end_of_options= 0, must_be_var, set_maximum_value, special_used,
@@ -91,9 +94,6 @@ int handle_options(int *argc, char ***argv,
   (*argv)++; /*      --- || ----      */
   init_variables(longopts);
 
-  if (! reporter)
-    reporter= &default_reporter;
-
   for (pos= *argv, pos_end=pos+ *argc; pos != pos_end ; pos++)
   {
     char *cur_arg= *pos;
@@ -118,8 +118,9 @@ int handle_options(int *argc, char ***argv,
 	    if (!*++pos)
 	    {
 	      if (my_getopt_print_errors)
-		reporter(ERROR_LEVEL,
-                         "%s: Option '-O' requires an argument\n", progname);
+                my_getopt_error_reporter(ERROR_LEVEL,
+                                         "%s: Option '-O' requires an argument\n",
+                                         progname);
 	      return EXIT_ARGUMENT_REQUIRED;
 	    }
 	    cur_arg= *pos;
@@ -135,9 +136,9 @@ int handle_options(int *argc, char ***argv,
 	    if (!*cur_arg)
 	    {
 	      if (my_getopt_print_errors)
-		reporter(ERROR_LEVEL,
-                         "%s: Option '--set-variable' requires an argument\n",
-                         progname);
+                my_getopt_error_reporter(ERROR_LEVEL,
+                                         "%s: Option '--set-variable' requires an argument\n",
+                                         progname);
 	      return EXIT_ARGUMENT_REQUIRED;
 	    }
 	  }
@@ -149,9 +150,9 @@ int handle_options(int *argc, char ***argv,
 	    if (!*++pos)
 	    {
 	      if (my_getopt_print_errors)
-	        reporter(ERROR_LEVEL,
-                         "%s: Option '--set-variable' requires an argument\n",
-                         progname);
+                my_getopt_error_reporter(ERROR_LEVEL,
+                                         "%s: Option '--set-variable' requires an argument\n",
+                                         progname);
 	      return EXIT_ARGUMENT_REQUIRED;
 	    }
 	    cur_arg= *pos;
@@ -210,10 +211,11 @@ int handle_options(int *argc, char ***argv,
 		  if (opt_found > 1)
 		  {
 		    if (my_getopt_print_errors)
-		      reporter(ERROR_LEVEL,
-                               "%s: ambiguous option '--%s-%s' (--%s-%s)\n",
-                               progname, special_opt_prefix[i], cur_arg,
-                               special_opt_prefix[i], prev_found);
+                      my_getopt_error_reporter(ERROR_LEVEL,
+                                               "%s: ambiguous option '--%s-%s' (--%s-%s)\n",
+                                               progname, special_opt_prefix[i],
+                                               cur_arg, special_opt_prefix[i],
+                                               prev_found);
 		    return EXIT_AMBIGUOUS_OPTION;
 		  }
 		  switch (i) {
@@ -245,16 +247,20 @@ int handle_options(int *argc, char ***argv,
 	    if (must_be_var)
 	    {
 	      if (my_getopt_print_errors)
-		reporter(option_is_loose ? WARNING_LEVEL : ERROR_LEVEL,
-                         "%s: unknown variable '%s'\n", progname, cur_arg);
+                my_getopt_error_reporter(option_is_loose ? 
+                                           WARNING_LEVEL : ERROR_LEVEL,
+                                         "%s: unknown variable '%s'\n",
+                                         progname, cur_arg);
 	      if (!option_is_loose)
 		return EXIT_UNKNOWN_VARIABLE;
 	    }
 	    else
 	    {
 	      if (my_getopt_print_errors)
-		reporter(option_is_loose ? WARNING_LEVEL : ERROR_LEVEL,
-                         "%s: unknown option '--%s'\n", progname, cur_arg);
+                my_getopt_error_reporter(option_is_loose ? 
+                                           WARNING_LEVEL : ERROR_LEVEL,
+                                         "%s: unknown option '--%s'\n", 
+                                         progname, cur_arg);
 	      if (!option_is_loose)
 		return EXIT_UNKNOWN_OPTION;
 	    }
@@ -270,23 +276,27 @@ int handle_options(int *argc, char ***argv,
 	  if (must_be_var)
 	  {
 	    if (my_getopt_print_errors)
-	      reporter(ERROR_LEVEL, "%s: variable prefix '%s' is not unique\n",
-                       progname, cur_arg);
+              my_getopt_error_reporter(ERROR_LEVEL,
+                                       "%s: variable prefix '%s' is not unique\n",
+                                       progname, cur_arg);
 	    return EXIT_VAR_PREFIX_NOT_UNIQUE;
 	  }
 	  else
 	  {
 	    if (my_getopt_print_errors)
-	      reporter(ERROR_LEVEL, "%s: ambiguous option '--%s' (%s, %s)\n",
-                       progname, cur_arg, prev_found, optp->name);
+              my_getopt_error_reporter(ERROR_LEVEL,
+                                       "%s: ambiguous option '--%s' (%s, %s)\n",
+                                       progname, cur_arg, prev_found, 
+                                       optp->name);
 	    return EXIT_AMBIGUOUS_OPTION;
 	  }
 	}
 	if (must_be_var && optp->var_type == GET_NO_ARG)
 	{
 	  if (my_getopt_print_errors)
-	    reporter(ERROR_LEVEL, "%s: option '%s' cannot take an argument\n",
-                     progname, optp->name);
+            my_getopt_error_reporter(ERROR_LEVEL, 
+                                     "%s: option '%s' cannot take an argument\n",
+                                     progname, optp->name);
 	  return EXIT_NO_ARGUMENT_ALLOWED;
 	}
 	if (optp->arg_type == NO_ARG)
@@ -294,9 +304,9 @@ int handle_options(int *argc, char ***argv,
 	  if (optend && optp->var_type != GET_BOOL)
 	  {
 	    if (my_getopt_print_errors)
-	      reporter(ERROR_LEVEL,
-                       "%s: option '--%s' cannot take an argument\n",
-                       progname, optp->name);
+              my_getopt_error_reporter(ERROR_LEVEL,
+                                       "%s: option '--%s' cannot take an argument\n",
+                                       progname, optp->name);
 	    return EXIT_NO_ARGUMENT_ALLOWED;
 	  }
 	  if (optp->var_type == GET_BOOL)
@@ -333,9 +343,9 @@ int handle_options(int *argc, char ***argv,
 	  if (!*++pos)
 	  {
 	    if (my_getopt_print_errors)
-	      reporter(ERROR_LEVEL,
-                       "%s: option '--%s' requires an argument\n",
-                       progname, optp->name);
+              my_getopt_error_reporter(ERROR_LEVEL,
+                                       "%s: option '--%s' requires an argument\n",
+                                       progname, optp->name);
 	    return EXIT_ARGUMENT_REQUIRED;
 	  }
 	  argument= *pos;
@@ -384,9 +394,9 @@ int handle_options(int *argc, char ***argv,
 		  if (!pos[1])
 		  {
                     if (my_getopt_print_errors)
-                      reporter(ERROR_LEVEL,
-                               "%s: option '-%c' requires an argument\n",
-                               progname, optp->id);
+                      my_getopt_error_reporter(ERROR_LEVEL,
+                                               "%s: option '-%c' requires an argument\n",
+                                               progname, optp->id);
                     return EXIT_ARGUMENT_REQUIRED;
 		  }
 		  argument= *++pos;
@@ -396,9 +406,9 @@ int handle_options(int *argc, char ***argv,
 	      }
 	      if ((error= setval(optp, argument, set_maximum_value)))
 	      {
-		reporter(ERROR_LEVEL,
-                         "%s: Error while setting value '%s' to '%s'\n",
-                         progname, argument, optp->name);
+                my_getopt_error_reporter(ERROR_LEVEL,
+                                         "%s: Error while setting value '%s' to '%s'\n",
+                                         progname, argument, optp->name);
 		return error;
 	      }
 	      get_one_option(optp->id, optp, argument);
@@ -408,8 +418,9 @@ int handle_options(int *argc, char ***argv,
 	  if (!opt_found)
 	  {
 	    if (my_getopt_print_errors)
-	      reporter(ERROR_LEVEL,
-                       "%s: unknown option '-%c'\n", progname, *optend);
+              my_getopt_error_reporter(ERROR_LEVEL,
+                                       "%s: unknown option '-%c'\n", 
+                                       progname, *optend);
 	    return EXIT_UNKNOWN_OPTION;
 	  }
 	}
@@ -418,9 +429,9 @@ int handle_options(int *argc, char ***argv,
       }
       if ((error= setval(optp, argument, set_maximum_value)))
       {
-	reporter(ERROR_LEVEL,
-                 "%s: Error while setting value '%s' to '%s'\n",
-                 progname, argument, optp->name);
+        my_getopt_error_reporter(ERROR_LEVEL,
+                                 "%s: Error while setting value '%s' to '%s'\n",
+                                 progname, argument, optp->name);
 	return error;
       }
       get_one_option(optp->id, optp, argument);
diff --git a/sql/gen_lex_hash.cc b/sql/gen_lex_hash.cc
index 72ab1184533..1e78aa35195 100644
--- a/sql/gen_lex_hash.cc
+++ b/sql/gen_lex_hash.cc
@@ -384,7 +384,7 @@ static int get_options(int argc, char **argv)
 {
   int ho_error;
 
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, 0)))
+  if ((ho_error= handle_options(&argc, &argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   if (argc >= 1)
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 1068c5ec9a1..1e682e16d1f 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -5119,8 +5119,8 @@ static void get_options(int argc,char **argv)
 {
   int ho_error;
 
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option,
-                               option_error_reporter)))
+  my_getopt_error_reporter= option_error_reporter;
+  if ((ho_error= handle_options(&argc, &argv, my_long_options, get_one_option)))
     exit(ho_error);
 
 #if defined(HAVE_BROKEN_REALPATH)
diff --git a/tools/mysqlmanager.c b/tools/mysqlmanager.c
index 12b5519ae9c..ade6da895c6 100644
--- a/tools/mysqlmanager.c
+++ b/tools/mysqlmanager.c
@@ -1333,7 +1333,7 @@ static int parse_args(int argc, char **argv)
 {
   int ho_error;
   
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL)))
+  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
     exit(ho_error);
 
   return 0;