diff options
author | unknown <petr@mysql.com> | 2005-08-05 14:35:30 +0400 |
---|---|---|
committer | unknown <petr@mysql.com> | 2005-08-05 14:35:30 +0400 |
commit | 85834c3b030e6680b02cf8b49ea71903d30a4ea2 (patch) | |
tree | bec1dbc1b759160295f274de25f51be456392277 /server-tools/instance-manager/options.cc | |
parent | c5bcb9f01c459e43e0c19e14b2910bea4af26393 (diff) | |
download | mariadb-git-85834c3b030e6680b02cf8b49ea71903d30a4ea2.tar.gz |
IM port fixes: fix crash on startup, add more error checking, get rid of unnecessary code.
server-tools/instance-manager/commands.cc:
fix memory leak
server-tools/instance-manager/guardian.cc:
don't check pthread_mutex_lock/unlock return value, as it never returns error if properly
used (no self deadlocks) and initialized
server-tools/instance-manager/guardian.h:
prototype fixed
server-tools/instance-manager/instance_map.cc:
don't check pthread_mutex_lock/unlock status, as it never returns error if
properly used (no self deadlocks) and initialized
server-tools/instance-manager/instance_map.h:
prototype fixed
server-tools/instance-manager/listener.cc:
initialize highest-numbered descriptor to 0 for select before setting it with max(n, sockets[i]),
ifdef unix-specific code
server-tools/instance-manager/manager.cc:
remove commented stuff
server-tools/instance-manager/options.cc:
fix crash in load_defaults, which happened on all Unix systems due to
const char *Options::config_file= NULL. Check return value for GetModuleFileName.
Get rid of obscure default_config_file[FN_REFLEN]= "/etc/my.cnf"; which was never used
Diffstat (limited to 'server-tools/instance-manager/options.cc')
-rw-r--r-- | server-tools/instance-manager/options.cc | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/server-tools/instance-manager/options.cc b/server-tools/instance-manager/options.cc index a8e677db630..86e21ec8a11 100644 --- a/server-tools/instance-manager/options.cc +++ b/server-tools/instance-manager/options.cc @@ -32,17 +32,16 @@ const char *default_password_file_name= QUOTE(DEFAULT_PASSWORD_FILE_NAME); const char *default_log_file_name= QUOTE(DEFAULT_LOG_FILE_NAME); -char default_config_file[FN_REFLEN]= "/etc/my.cnf"; +#ifdef __WIN__ +char windows_config_file[FN_REFLEN]; -#ifndef __WIN__ -char Options::run_as_service; -const char *Options::user= 0; /* No default value */ -const char *Options::config_file= NULL; -#else char Options::install_as_service; char Options::remove_service; -const char *Options::config_file= QUOTE(DEFAULT_CONFIG_FILE); +#else +char Options::run_as_service; +const char *Options::user= 0; /* No default value */ #endif +const char *Options::config_file= QUOTE(DEFAULT_CONFIG_FILE); const char *Options::log_file_name= default_log_file_name; const char *Options::pid_file_name= QUOTE(DEFAULT_PID_FILE_NAME); const char *Options::socket_file_name= QUOTE(DEFAULT_SOCKET_FILE_NAME); @@ -271,9 +270,20 @@ int Options::load(int argc, char **argv) */ if (Options::config_file == NULL) { - ::GetModuleFileName(NULL, default_config_file, sizeof(default_config_file)); char *filename= strrchr(default_config_file, "\\"); - strcpy(filename, "\\my.ini"); - Options::config_file= default_config_file; + char *filename; + static const char default_win_config_file_name[]= "\\my.ini"; + + if (!GetModuleFileName(NULL, windows_config_file, + sizeof(windows_config_file))) + goto err; + + filename= strrchr(windows_config_file, "\\"); + /* + Don't check for the overflow as strlen("\\my.ini") is less + then strlen("mysqlmanager") (the binary name) + */ + strcpy(filename, default_win_config_file_name); + Options::config_file= windows_config_file; } #endif |