diff options
Diffstat (limited to 'server-tools/instance-manager/options.cc')
-rw-r--r-- | server-tools/instance-manager/options.cc | 57 |
1 files changed, 20 insertions, 37 deletions
diff --git a/server-tools/instance-manager/options.cc b/server-tools/instance-manager/options.cc index 6fad798b49a..34a9a0792e9 100644 --- a/server-tools/instance-manager/options.cc +++ b/server-tools/instance-manager/options.cc @@ -36,8 +36,7 @@ const char *Options::pid_file_name= QUOTE(DEFAULT_PID_FILE_NAME); const char *Options::socket_file_name= QUOTE(DEFAULT_SOCKET_FILE_NAME); const char *Options::password_file_name= QUOTE(DEFAULT_PASSWORD_FILE_NAME); const char *Options::default_mysqld_path= QUOTE(DEFAULT_MYSQLD_PATH); -const char *Options::default_config_file= QUOTE(DEFAULT_CONFIG_FILE); -const char *Options::single_defaults_file_option= 0; /* No default value */ +const char *Options::config_file= QUOTE(DEFAULT_CONFIG_FILE); const char *Options::bind_address= 0; /* No default value */ const char *Options::user= 0; /* No default value */ uint Options::monitoring_interval= DEFAULT_MONITORING_INTERVAL; @@ -144,7 +143,12 @@ static void usage() printf("Usage: %s [OPTIONS] \n", my_progname); my_print_help(my_long_options); - print_defaults("my", default_groups); + printf("\nThe following options may be given as the first argument:\n" + "--print-defaults Print the program argument list and exit\n" + "--defaults-file=# Only read manager configuration and instance\n" + " setings from the given file #. The same file\n" + " will be used to modify configuration of instances\n" + " with SET commands.\n"); my_print_variables(my_long_options); } @@ -216,58 +220,37 @@ C_MODE_END int Options::load(int argc, char **argv) { - int rc; - char **original_argv; - int original_argc; - char *original_argv_buff[1024]; - int use_new_argv= 0; - saved_argv= argv; - original_argv= original_argv_buff; - original_argc= argc; - if (argc >= 2 && is_prefix(argv[1],"--defaults-file=")) + if (argc >= 2) { - if (is_prefix(argv[1],"--defaults-file=")) + if (is_prefix(argv[1], "--defaults-file=")) { - /* set --defaults-file, so that we read only this file */ - Options::single_defaults_file_option= argv[1]; + Options::config_file= strchr(argv[1], '=') + 1; } - if (is_prefix(argv[1],"--defaults-extra-file=")) + if (is_prefix(argv[1], "--defaults-extra-file=") || + is_prefix(argv[1], "--no-defaults")) { - int argv_pos= 1; - - original_argv[0]= argv[0]; - use_new_argv= 1; - /* skip --defaullts-extra-file */ - while (++argv_pos != argc) - original_argv[argv_pos]=argv[argv_pos]; - original_argv[argv_pos]= 0; /* the log is not enabled yet */ - fprintf(stderr, "--defaults-extra-file is not supported by IM." - " Skipping the option. \n"); - original_argc--; + fprintf(stderr, "The --defaults-extra-file and --no-defaults options" + " are not supported by\n" + "Instance Manager. Program aborted.\n"); + goto err; } } - /* here load_defaults will save pointer to free allocated memory */ - if (use_new_argv) - saved_argv= original_argv; - else - saved_argv= argv; - /* config-file options are prepended to command-line ones */ - load_defaults(default_config_file, default_groups, &original_argc, + load_defaults(config_file, default_groups, &argc, &saved_argv); - if ((rc= handle_options(&original_argc, &saved_argv, my_long_options, - get_one_option)) != 0) + if ((handle_options(&argc, &saved_argv, my_long_options, + get_one_option)) != 0) goto err; return 0; err: - return rc; + return 1; } void Options::cleanup() |