diff options
author | jimw@mysql.com <> | 2006-04-30 13:27:38 -0700 |
---|---|---|
committer | jimw@mysql.com <> | 2006-04-30 13:27:38 -0700 |
commit | f21c110d138990de057d7d69971f60bfc678f737 (patch) | |
tree | 4149d104692e9dafa62ff0ddb7174a16b4a47013 /server-tools | |
parent | 08eb2588bffdf1b5a2f06ee1a6e5d7c189ed2201 (diff) | |
parent | bad7e32a949982c07a738ce83bc5f87a562d90a3 (diff) | |
download | mariadb-git-f21c110d138990de057d7d69971f60bfc678f737.tar.gz |
Merge mysql.com:/home/jimw/my/mysql-5.0-clean
into mysql.com:/home/jimw/my/mysql-5.1-clean
Diffstat (limited to 'server-tools')
-rw-r--r-- | server-tools/instance-manager/instance_options.cc | 57 | ||||
-rw-r--r-- | server-tools/instance-manager/instance_options.h | 5 |
2 files changed, 60 insertions, 2 deletions
diff --git a/server-tools/instance-manager/instance_options.cc b/server-tools/instance-manager/instance_options.cc index 06a6e1ebc63..8bbd362a15b 100644 --- a/server-tools/instance-manager/instance_options.cc +++ b/server-tools/instance-manager/instance_options.cc @@ -22,6 +22,7 @@ #include "parse_output.h" #include "buffer.h" +#include "log.h" #include <my_sys.h> #include <signal.h> @@ -148,6 +149,60 @@ int Instance_options::fill_instance_version() mysqld_version= strdup_root(&alloc, start); } err: + if (rc) + log_error("fill_instance_version: Failed to get version of '%s'", + mysqld_path); + return rc; +} + + +/* + Fill mysqld_real_path + + SYNOPSYS + fill_mysqld_real_path() + + DESCRIPTION + + Get the real path to mysqld from "mysqld --help" output. + Will print the realpath of mysqld between "Usage: " and "[OPTIONS]" + + This is needed if the mysqld_path variable is pointing at a + script(for example libtool) or a symlink. + + RETURN + 0 - ok + 1 - error occured +*/ + +int Instance_options::fill_mysqld_real_path() +{ + char result[FN_REFLEN]; + char help_option[]= " --no-defaults --help"; + int rc= 1; + Buffer cmd(mysqld_path_len + sizeof(help_option)); + + if (create_mysqld_command(&cmd, mysqld_path, mysqld_path_len, + help_option, sizeof(help_option))) + goto err; + + bzero(result, FN_REFLEN); + + rc= parse_output_and_get_value(cmd.buffer, "Usage: ", + result, FN_REFLEN, + GET_LINE); + + if (*result != '\0') + { + char* options_str; + /* chop the path of at [OPTIONS] */ + if ((options_str= strstr(result, "[OPTIONS]"))) + *options_str= '\0'; + mysqld_real_path= strdup_root(&alloc, result); + } +err: + if (rc) + log_error("fill_mysqld_real_path: Failed to get real path of mysqld"); return rc; } @@ -408,7 +463,7 @@ int Instance_options::complete_initialization(const char *default_path, options_array.elements*sizeof(char*)); argv[filled_default_options + options_array.elements]= 0; - if (fill_log_options() || fill_instance_version()) + if (fill_log_options() || fill_mysqld_real_path() || fill_instance_version()) goto err; return 0; diff --git a/server-tools/instance-manager/instance_options.h b/server-tools/instance-manager/instance_options.h index dae1c2695d1..b316dbf00fc 100644 --- a/server-tools/instance-manager/instance_options.h +++ b/server-tools/instance-manager/instance_options.h @@ -44,7 +44,8 @@ public: Instance_options() : mysqld_version(0), mysqld_socket(0), mysqld_datadir(0), mysqld_bind_address(0), mysqld_pid_file(0), mysqld_port(0), - mysqld_port_val(0), mysqld_path(0), nonguarded(0), shutdown_delay(0), + mysqld_port_val(0), mysqld_path(0), mysqld_real_path(0), + nonguarded(0), shutdown_delay(0), shutdown_delay_val(0), filled_default_options(0) {} ~Instance_options(); @@ -84,6 +85,7 @@ public: uint instance_name_len; const char *mysqld_path; uint mysqld_path_len; + const char *mysqld_real_path; const char *nonguarded; const char *shutdown_delay; uint shutdown_delay_val; @@ -95,6 +97,7 @@ public: private: int fill_log_options(); int fill_instance_version(); + int fill_mysqld_real_path(); int add_to_argv(const char *option); int get_default_option(char *result, size_t result_len, const char *option_name); |