summaryrefslogtreecommitdiff
path: root/server-tools/instance-manager/options.cc
diff options
context:
space:
mode:
authorunknown <petr@mysql.com>2005-08-05 14:35:30 +0400
committerunknown <petr@mysql.com>2005-08-05 14:35:30 +0400
commit85834c3b030e6680b02cf8b49ea71903d30a4ea2 (patch)
treebec1dbc1b759160295f274de25f51be456392277 /server-tools/instance-manager/options.cc
parentc5bcb9f01c459e43e0c19e14b2910bea4af26393 (diff)
downloadmariadb-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.cc30
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