Commit 3e964a18 authored by reggie@linux.site's avatar reggie@linux.site

Merge rburnett@bk-internal.mysql.com:/home/bk/mysql-5.0

into  linux.site:/home/reggie/bk/mysql-5.0-new
parents 88b01808 153ad3f6
......@@ -50,7 +50,7 @@ int HandleServiceOptions(Options options)
else
{
log_info("Service failed to install");
ret_val= -1;
ret_val= 1;
}
}
else if (options.remove_service)
......@@ -62,10 +62,10 @@ int HandleServiceOptions(Options options)
else
{
log_info("Service failed to remove");
ret_val= -1;
ret_val= 1;
}
}
else
return (int)winService.Init();
ret_val= !winService.Init();
return ret_val;
}
......@@ -79,6 +79,7 @@ int HandleServiceOptions(Options options);
int main(int argc, char *argv[])
{
int return_value= 1;
init_environment(argv[0]);
Options options;
struct passwd *user_info;
......@@ -90,10 +91,7 @@ int main(int argc, char *argv[])
if ((user_info= check_user(options.user)))
{
if (set_user(options.user, user_info))
{
options.cleanup();
goto err;
}
}
if (options.run_as_service)
......@@ -105,17 +103,18 @@ int main(int argc, char *argv[])
}
#else
#ifdef NDEBUG
return HandleServiceOptions(options);
return_value= HandleServiceOptions(options);
goto err; /* this is not always an error but we reuse the label */
#endif
#endif
manager(options);
options.cleanup();
my_end(0);
return 0;
return_value= 0;
err:
options.cleanup();
my_end(0);
return 1;
return return_value;
}
/******************* Auxilary functions implementation **********************/
......
......@@ -30,18 +30,20 @@
#define QUOTE2(x) #x
#define QUOTE(x) QUOTE2(x)
const char *default_password_file_name= QUOTE(DEFAULT_PASSWORD_FILE_NAME);
const char *default_log_file_name= QUOTE(DEFAULT_LOG_FILE_NAME);
#ifdef __WIN__
char windows_config_file[FN_REFLEN];
char Options::install_as_service;
char Options::remove_service;
char windows_config_file[FN_REFLEN];
char default_password_file_name[FN_REFLEN];
char default_log_file_name[FN_REFLEN];
const char *Options::config_file= windows_config_file;
#else
char Options::run_as_service;
const char *Options::user= 0; /* No default value */
#endif
const char *default_password_file_name= QUOTE(DEFAULT_PASSWORD_FILE_NAME);
const char *default_log_file_name= QUOTE(DEFAULT_LOG_FILE_NAME);
const char *Options::config_file= QUOTE(DEFAULT_CONFIG_FILE);
#endif
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);
......@@ -51,7 +53,7 @@ const char *Options::bind_address= 0; /* No default value */
uint Options::monitoring_interval= DEFAULT_MONITORING_INTERVAL;
uint Options::port_number= DEFAULT_PORT;
/* just to declare */
char **Options::saved_argv;
char **Options::saved_argv= NULL;
/*
List of options, accepted by the instance manager.
......@@ -262,30 +264,8 @@ int Options::load(int argc, char **argv)
}
#ifdef __WIN__
setup_windows_defaults(*argv);
/*
On Windows, there are two possibilities. Either we are given
a defaults file on the command line or we use the my.ini file
that is in our app dir
*/
if (Options::config_file == NULL)
{
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;
}
if (setup_windows_defaults())
goto err;
#endif
/* config-file options are prepended to command-line ones */
......@@ -305,33 +285,32 @@ int Options::load(int argc, char **argv)
void Options::cleanup()
{
/* free_defaults returns nothing */
free_defaults(Options::saved_argv);
#ifdef __WIN__
free((char*)default_password_file_name);
#endif
if (Options::saved_argv != NULL)
free_defaults(Options::saved_argv);
}
#ifdef __WIN__
char* change_extension(const char *src, const char *newext)
int Options::setup_windows_defaults()
{
char *dot= (char*)strrchr(src, '.');
if (!dot) return (char*)src;
int newlen= dot-src+strlen(newext)+1;
char *temp= (char*)malloc(newlen);
bzero(temp, newlen);
strncpy(temp, src, dot-src+1);
strcat(temp, newext);
return temp;
}
void Options::setup_windows_defaults(const char *progname)
{
Options::password_file_name= default_password_file_name=
change_extension(progname, "passwd");
Options::log_file_name= default_log_file_name=
change_extension(progname, "log");
if (!GetModuleFileName(NULL, default_password_file_name,
sizeof(default_password_file_name)))
return 1;
char *filename= strstr(default_password_file_name, ".exe");
strcpy(filename, ".passwd");
if (!GetModuleFileName(NULL, default_log_file_name,
sizeof(default_log_file_name)))
return 1;
filename= strstr(default_log_file_name, ".exe");
strcpy(filename, ".log");
if (!GetModuleFileName(NULL, windows_config_file,
sizeof(windows_config_file)))
return 1;
char *slash= strrchr(windows_config_file, '\\');
strcpy(slash, "\\my.ini");
return 0;
}
#endif
......@@ -52,7 +52,7 @@ struct Options
int load(int argc, char **argv);
void cleanup();
#ifdef __WIN__
void setup_windows_defaults(const char *progname);
int setup_windows_defaults(const char *progname);
#endif
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment