Polishing:

  1. use MySQL headers instead of system ones;
  2. move logical part of code into a separate function.
parent a91354c3
...@@ -17,19 +17,16 @@ ...@@ -17,19 +17,16 @@
#include "angel.h" #include "angel.h"
#include <signal.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h> #include <sys/wait.h>
/* /*
Include my_global.h right after system includes so that we can change sys/wait.h is needed for waitpid(). Unfortunately, there is no MySQL
system defines if needed. include file, that can serve for this. Include it before MySQL system
headers so that we can change system defines if needed.
*/ */
#include "my_global.h" #include "my_global.h"
#include "my_alarm.h"
#include "my_sys.h"
/* Include other IM files. */ /* Include other IM files. */
......
...@@ -184,6 +184,53 @@ void Manager::stop_all_threads() ...@@ -184,6 +184,53 @@ void Manager::stop_all_threads()
} }
/**
Initialize user map and load password file.
SYNOPSIS
init_user_map()
RETURN
FALSE on success
TRUE on failure
*/
bool Manager::init_user_map(User_map *user_map)
{
int err_code;
const char *err_msg;
if (user_map->init())
{
log_error("Manager: can not initialize user list: out of memory.");
return TRUE;
}
err_code= user_map->load(Options::Main::password_file_name, &err_msg);
if (!err_code)
return FALSE;
if (err_code == ERR_PASSWORD_FILE_DOES_NOT_EXIST &&
Options::Main::mysqld_safe_compatible)
{
/*
The password file does not exist, but we are running in
mysqld_safe-compatible mode. Continue, but complain in log.
*/
log_info("Warning: password file does not exist, "
"nobody will be able to connect to Instance Manager.");
return FALSE;
}
log_error("Manager: %s.", (const char *) err_msg);
return TRUE;
}
/** /**
Main manager function. Main manager function.
...@@ -201,9 +248,7 @@ void Manager::stop_all_threads() ...@@ -201,9 +248,7 @@ void Manager::stop_all_threads()
int Manager::main() int Manager::main()
{ {
int err_code;
int rc= 1; int rc= 1;
const char *err_msg;
bool shutdown_complete= FALSE; bool shutdown_complete= FALSE;
pid_t manager_pid= getpid(); pid_t manager_pid= getpid();
...@@ -258,33 +303,10 @@ int Manager::main() ...@@ -258,33 +303,10 @@ int Manager::main()
return 1; return 1;
} }
/* Initialize user map and load password file. */ /* Initialize user db. */
if (user_map.init())
{
log_error("Manager: can not initialize user list: out of memory.");
return 1;
}
if ((err_code= user_map.load(Options::Main::password_file_name, &err_msg)))
{
if (err_code == ERR_PASSWORD_FILE_DOES_NOT_EXIST &&
Options::Main::mysqld_safe_compatible)
{
/*
The password file does not exist, but we are running in
mysqld_safe-compatible mode. Continue, but complain in log.
*/
log_info("Warning: password file does not exist, " if (init_user_map(&user_map))
"nobody will be able to connect to Instance Manager."); return 1; /* logging has been already done. */
}
else
{
log_error("Manager: %s.", (const char *) err_msg);
return 1;
}
}
/* Write Instance Manager pid file. */ /* Write Instance Manager pid file. */
......
...@@ -51,6 +51,7 @@ public: ...@@ -51,6 +51,7 @@ public:
private: private:
static void stop_all_threads(); static void stop_all_threads();
static bool init_user_map(User_map *user_map);
private: private:
static Guardian *p_guardian; static Guardian *p_guardian;
......
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
mysql subsystem. mysql subsystem.
*/ */
static int im_main(int argc, char *argv[]); static int main_impl(int argc, char *argv[]);
#ifndef __WIN__ #ifndef __WIN__
static struct passwd *check_user(); static struct passwd *check_user();
...@@ -90,7 +90,7 @@ int main(int argc, char *argv[]) ...@@ -90,7 +90,7 @@ int main(int argc, char *argv[])
log_info("IM: started."); log_info("IM: started.");
return_value= im_main(argc, argv); return_value= main_impl(argc, argv);
log_info("IM: finished."); log_info("IM: finished.");
...@@ -108,7 +108,7 @@ int main(int argc, char *argv[]) ...@@ -108,7 +108,7 @@ int main(int argc, char *argv[])
Instance Manager main functionality. Instance Manager main functionality.
*************************************************************************/ *************************************************************************/
int im_main(int argc, char *argv[]) int main_impl(int argc, char *argv[])
{ {
int rc; int rc;
......
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