diff options
author | unknown <petr@mysql.com> | 2005-07-21 14:21:23 +0400 |
---|---|---|
committer | unknown <petr@mysql.com> | 2005-07-21 14:21:23 +0400 |
commit | 34fa3be594434bae844c087f7a79bca5103b758f (patch) | |
tree | 29261f504adad5b9145e9497ef5c680c3da1d3fe /server-tools/instance-manager/options.cc | |
parent | 15413296d85b31d518255c4ea1cab84618a99f3f (diff) | |
download | mariadb-git-34fa3be594434bae844c087f7a79bca5103b758f.tar.gz |
WL #2713 Change IM behaviour so, that it only reads and alters one config file only.
Implemented on brian's request.
server-tools/instance-manager/Makefile.am:
define default config file
server-tools/instance-manager/commands.cc:
Use specified or default file to edit with SET commands instead of hardcoded file
server-tools/instance-manager/commands.h:
add member to SET commands
server-tools/instance-manager/instance_map.cc:
rename first_option -> single_defaults_option, made logging a bit more verbose
server-tools/instance-manager/instance_map.h:
rename first_option -> single_defaults_file + made it public
server-tools/instance-manager/manager.cc:
rename first_option -> single_defaults_file
server-tools/instance-manager/mysqlmanager.cc:
goto generic error label instead of simple return
server-tools/instance-manager/options.cc:
skip --defaults-extra file and give a message if it was specified, made IM
to read one config file only
server-tools/instance-manager/options.h:
added new members to the option structure
Diffstat (limited to 'server-tools/instance-manager/options.cc')
-rw-r--r-- | server-tools/instance-manager/options.cc | 65 |
1 files changed, 52 insertions, 13 deletions
diff --git a/server-tools/instance-manager/options.cc b/server-tools/instance-manager/options.cc index e44e4c6ff34..6fad798b49a 100644 --- a/server-tools/instance-manager/options.cc +++ b/server-tools/instance-manager/options.cc @@ -36,7 +36,8 @@ 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::first_option= 0; /* No default value */ +const char *Options::default_config_file= QUOTE(DEFAULT_CONFIG_FILE); +const char *Options::single_defaults_file_option= 0; /* No default value */ const char *Options::bind_address= 0; /* No default value */ const char *Options::user= 0; /* No default value */ uint Options::monitoring_interval= DEFAULT_MONITORING_INTERVAL; @@ -204,31 +205,69 @@ C_MODE_END /* - - call load_defaults to load configuration file section + - Process argv of original program: get tid of --defaults-extra-file + and print a message if met there. + - call load_defaults to load configuration file section and save the pointer + for free_defaults. - call handle_options to assign defaults and command-line arguments - to the class members - if either of these function fail, exit the program - May not return. + to the class members. + if either of these function fail, return the error code. */ 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; - if (argc >= 2) + saved_argv= argv; + original_argv= original_argv_buff; + original_argc= argc; + + if (argc >= 2 && is_prefix(argv[1],"--defaults-file=")) { - if (is_prefix(argv[1],"--defaults-file=") || - is_prefix(argv[1],"--defaults-extra-file=")) - Options::first_option= argv[1]; + if (is_prefix(argv[1],"--defaults-file=")) + { + /* set --defaults-file, so that we read only this file */ + Options::single_defaults_file_option= argv[1]; + } + if (is_prefix(argv[1],"--defaults-extra-file=")) + { + 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--; + } } + /* 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("my", default_groups, &argc, &argv); - Options::saved_argv= argv; + load_defaults(default_config_file, default_groups, &original_argc, + &saved_argv); + + if ((rc= handle_options(&original_argc, &saved_argv, my_long_options, + get_one_option)) != 0) + goto err; - if ((rc= handle_options(&argc, &argv, my_long_options, get_one_option)) != 0) - return rc; return 0; + +err: + return rc; } void Options::cleanup() |