summaryrefslogtreecommitdiff
path: root/server-tools
diff options
context:
space:
mode:
authorpetr@mysql.com <>2005-08-05 17:02:06 +0400
committerpetr@mysql.com <>2005-08-05 17:02:06 +0400
commit22ccfb4d672b506b5b518af1977b286e17c463d3 (patch)
treec17b432f59765ab0f44f3da33b763ee66db3f3b1 /server-tools
parent07431723c06939262e910cf0140ea55e3d8530f9 (diff)
downloadmariadb-git-22ccfb4d672b506b5b518af1977b286e17c463d3.tar.gz
IM port cleanup
Diffstat (limited to 'server-tools')
-rwxr-xr-xserver-tools/instance-manager/IMService.cpp11
-rwxr-xr-xserver-tools/instance-manager/WindowsService.cpp87
-rwxr-xr-xserver-tools/instance-manager/WindowsService.h9
-rw-r--r--server-tools/instance-manager/instance.cc183
-rw-r--r--server-tools/instance-manager/listener.cc47
-rw-r--r--server-tools/instance-manager/manager.cc22
-rw-r--r--server-tools/instance-manager/options.cc57
-rw-r--r--server-tools/instance-manager/user_map.cc24
8 files changed, 213 insertions, 227 deletions
diff --git a/server-tools/instance-manager/IMService.cpp b/server-tools/instance-manager/IMService.cpp
index 1d678803264..b6195d15603 100755
--- a/server-tools/instance-manager/IMService.cpp
+++ b/server-tools/instance-manager/IMService.cpp
@@ -5,8 +5,8 @@
IMService::IMService(void)
{
- serviceName = "MySqlManager";
- displayName = "MySQL Manager";
+ serviceName= "MySqlManager";
+ displayName= "MySQL Manager";
}
IMService::~IMService(void)
@@ -35,13 +35,13 @@ void IMService::Log(const char *msg)
log_info(msg);
}
-int HandleServiceOptions(Options options)
+int HandleServiceOptions(Options options)
{
int ret_val= 0;
IMService winService;
- if (options.install_as_service)
+ if (options.install_as_service)
{
if (winService.IsInstalled())
log_info("Service is already installed\n");
@@ -59,7 +59,7 @@ int HandleServiceOptions(Options options)
log_info("Service is not installed\n");
else if (winService.Remove())
log_info("Service removed successfully\n");
- else
+ else
{
log_info("Service failed to remove\n");
ret_val= -1;
@@ -69,4 +69,3 @@ int HandleServiceOptions(Options options)
return (int)winService.Init();
return ret_val;
}
-
diff --git a/server-tools/instance-manager/WindowsService.cpp b/server-tools/instance-manager/WindowsService.cpp
index e4b9a3a8491..fb7e00e0d9b 100755
--- a/server-tools/instance-manager/WindowsService.cpp
+++ b/server-tools/instance-manager/WindowsService.cpp
@@ -4,9 +4,9 @@
static WindowsService *gService;
-WindowsService::WindowsService(void) :
- statusCheckpoint(0),
- serviceName(NULL),
+WindowsService::WindowsService(void) :
+ statusCheckpoint(0),
+ serviceName(NULL),
inited(false),
dwAcceptedControls(SERVICE_ACCEPT_STOP)
{
@@ -32,14 +32,14 @@ BOOL WindowsService::Install()
GetModuleFileName(NULL, szFilePath, sizeof(szFilePath));
// open a connection to the SCM
- if (!(scm= OpenSCManager(0, 0,SC_MANAGER_CREATE_SERVICE)))
+ if (!(scm= OpenSCManager(0, 0,SC_MANAGER_CREATE_SERVICE)))
return false;
newService= CreateService(scm, serviceName, displayName,
- SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
- SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
- szFilePath, NULL, NULL, NULL, username,
- password);
+ SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
+ SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
+ szFilePath, NULL, NULL, NULL, username,
+ password);
if (newService)
{
@@ -68,7 +68,7 @@ BOOL WindowsService::Init()
BOOL WindowsService::Remove()
{
- bool ret_val= false;
+ bool ret_val= false;
if (! IsInstalled())
return true;
@@ -81,7 +81,7 @@ BOOL WindowsService::Remove()
SC_HANDLE service= OpenService(scm, serviceName, DELETE);
if (service)
{
- if (DeleteService(service))
+ if (DeleteService(service))
ret_val= true;
DWORD dw= ::GetLastError();
CloseServiceHandle(service);
@@ -112,18 +112,18 @@ void WindowsService::SetAcceptedControls(DWORD acceptedControls)
}
-BOOL WindowsService::ReportStatus(DWORD currentState, DWORD waitHint,
+BOOL WindowsService::ReportStatus(DWORD currentState, DWORD waitHint,
DWORD dwError)
{
if(debugging) return TRUE;
if(currentState == SERVICE_START_PENDING)
- status.dwControlsAccepted= 0;
+ status.dwControlsAccepted= 0;
else
- status.dwControlsAccepted= dwAcceptedControls;
+ status.dwControlsAccepted= dwAcceptedControls;
status.dwCurrentState= currentState;
- status.dwWin32ExitCode= dwError != 0 ?
+ status.dwWin32ExitCode= dwError != 0 ?
ERROR_SERVICE_SPECIFIC_ERROR : NO_ERROR;
status.dwWaitHint= waitHint;
status.dwServiceSpecificExitCode= dwError;
@@ -155,35 +155,34 @@ void WindowsService::RegisterAndRun(DWORD argc, LPTSTR *argv)
void WindowsService::HandleControlCode(DWORD opcode)
{
// Handle the requested control code.
- switch(opcode)
- {
- case SERVICE_CONTROL_STOP:
- // Stop the service.
- status.dwCurrentState= SERVICE_STOP_PENDING;
- Stop();
- break;
-
- case SERVICE_CONTROL_PAUSE:
- status.dwCurrentState= SERVICE_PAUSE_PENDING;
- Pause();
- break;
-
- case SERVICE_CONTROL_CONTINUE:
- status.dwCurrentState= SERVICE_CONTINUE_PENDING;
- Continue();
- break;
-
- case SERVICE_CONTROL_SHUTDOWN:
- Shutdown();
- break;
-
- case SERVICE_CONTROL_INTERROGATE:
- ReportStatus(status.dwCurrentState);
- break;
-
- default:
- // invalid control code
- break;
+ switch(opcode) {
+ case SERVICE_CONTROL_STOP:
+ // Stop the service.
+ status.dwCurrentState= SERVICE_STOP_PENDING;
+ Stop();
+ break;
+
+ case SERVICE_CONTROL_PAUSE:
+ status.dwCurrentState= SERVICE_PAUSE_PENDING;
+ Pause();
+ break;
+
+ case SERVICE_CONTROL_CONTINUE:
+ status.dwCurrentState= SERVICE_CONTINUE_PENDING;
+ Continue();
+ break;
+
+ case SERVICE_CONTROL_SHUTDOWN:
+ Shutdown();
+ break;
+
+ case SERVICE_CONTROL_INTERROGATE:
+ ReportStatus(status.dwCurrentState);
+ break;
+
+ default:
+ // invalid control code
+ break;
}
}
@@ -201,5 +200,3 @@ void WINAPI WindowsService::ControlHandler(DWORD opcode)
return gService->HandleControlCode(opcode);
}
-
-
diff --git a/server-tools/instance-manager/WindowsService.h b/server-tools/instance-manager/WindowsService.h
index e4616278166..612eeda21e9 100755
--- a/server-tools/instance-manager/WindowsService.h
+++ b/server-tools/instance-manager/WindowsService.h
@@ -3,7 +3,7 @@
class WindowsService
{
protected:
- bool inited;
+ bool inited;
const char *serviceName;
const char *displayName;
const char *username;
@@ -23,11 +23,11 @@ public:
BOOL Init();
BOOL IsInstalled();
void SetAcceptedControls(DWORD acceptedControls);
- void Debug(bool debugFlag) { debugging = debugFlag; }
+ void Debug(bool debugFlag) { debugging= debugFlag; }
public:
- static void WINAPI ServiceMain(DWORD argc, LPTSTR *argv);
- static void WINAPI ControlHandler(DWORD CtrlType);
+ static void WINAPI ServiceMain(DWORD argc, LPTSTR *argv);
+ static void WINAPI ControlHandler(DWORD CtrlType);
protected:
virtual void Run()= 0;
@@ -41,4 +41,3 @@ protected:
void HandleControlCode(DWORD opcode);
void RegisterAndRun(DWORD argc, LPTSTR *argv);
};
-
diff --git a/server-tools/instance-manager/instance.cc b/server-tools/instance-manager/instance.cc
index 3fb953410cd..0ebd5802af9 100644
--- a/server-tools/instance-manager/instance.cc
+++ b/server-tools/instance-manager/instance.cc
@@ -57,12 +57,12 @@ C_MODE_END
void Instance::remove_pid()
{
- int pid;
- if ((pid= options.get_pid()) != 0) /* check the pidfile */
- if (options.unlink_pidfile()) /* remove stalled pidfile */
- log_error("cannot remove pidfile for instance %i, this might be \
- since IM lacks permmissions or hasn't found the pidifle",
- options.instance_name);
+ int pid;
+ if ((pid= options.get_pid()) != 0) /* check the pidfile */
+ if (options.unlink_pidfile()) /* remove stalled pidfile */
+ log_error("cannot remove pidfile for instance %i, this might be \
+ since IM lacks permmissions or hasn't found the pidifle",
+ options.instance_name);
}
/*
@@ -121,16 +121,15 @@ int Instance::launch_and_wait()
{
pid_t pid= fork();
- switch (pid)
- {
- case 0:
- execv(options.mysqld_path, options.argv);
- /* exec never returns */
- exit(1);
- case -1:
- log_info("cannot fork() to start instance %s", options.instance_name);
- return -1;
- default:
+ switch (pid) {
+ case 0:
+ execv(options.mysqld_path, options.argv);
+ /* exec never returns */
+ exit(1);
+ case -1:
+ log_info("cannot fork() to start instance %s", options.instance_name);
+ return -1;
+ default:
/*
Here we wait for the child created. This process differs for systems
running LinuxThreads and POSIX Threads compliant systems. This is because
@@ -157,56 +156,56 @@ int Instance::launch_and_wait()
#else
int Instance::launch_and_wait()
{
- STARTUPINFO si;
- PROCESS_INFORMATION pi;
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
- ZeroMemory(&si, sizeof(si));
- si.cb = sizeof(si);
- ZeroMemory(&pi, sizeof(pi));
+ ZeroMemory(&si, sizeof(si));
+ si.cb= sizeof(si);
+ ZeroMemory(&pi, sizeof(pi));
- int cmdlen= 0;
- for (int i= 1; options.argv[i] != 0; i++)
- cmdlen+= strlen(options.argv[i]) + 1;
- cmdlen++; // we have to add a single space for CreateProcess (read the docs)
+ int cmdlen= 0;
+ for (int i= 1; options.argv[i] != 0; i++)
+ cmdlen+= strlen(options.argv[i]) + 1;
+ cmdlen++; // we have to add a single space for CreateProcess (read the docs)
- char *cmdline= NULL;
- if (cmdlen > 0)
+ char *cmdline= NULL;
+ if (cmdlen > 0)
+ {
+ cmdline= new char[cmdlen];
+ cmdline[0]= 0;
+ for (int i= 1; options.argv[i] != 0; i++)
{
- cmdline= new char[cmdlen];
- cmdline[0]= 0;
- for (int i= 1; options.argv[i] != 0; i++)
- {
- strcat(cmdline, " ");
- strcat(cmdline, options.argv[i]);
- }
+ strcat(cmdline, " ");
+ strcat(cmdline, options.argv[i]);
}
+ }
- // Start the child process.
- BOOL result= CreateProcess(options.mysqld_path, // file to execute
- cmdline, // Command line.
- NULL, // Process handle not inheritable.
- NULL, // Thread handle not inheritable.
- FALSE, // Set handle inheritance to FALSE.
- 0, // No creation flags.
- NULL, // Use parent's environment block.
- NULL, // Use parent's starting directory.
- &si, // Pointer to STARTUPINFO structure.
- &pi ); // Pointer to PROCESS_INFORMATION structure.
- delete cmdline;
- if (! result)
- return -1;
-
- // Wait until child process exits.
- WaitForSingleObject(pi.hProcess, INFINITE);
-
- DWORD exitcode;
- ::GetExitCodeProcess(pi.hProcess, &exitcode);
-
- // Close process and thread handles.
- CloseHandle(pi.hProcess);
- CloseHandle(pi.hThread);
-
- return exitcode;
+ // Start the child process.
+ BOOL result= CreateProcess(options.mysqld_path, // file to execute
+ cmdline, // Command line.
+ NULL, // Process handle not inheritable.
+ NULL, // Thread handle not inheritable.
+ FALSE, // Set handle inheritance to FALSE.
+ 0, // No creation flags.
+ NULL, // Use parent's environment block.
+ NULL, // Use parent's starting directory.
+ &si, // Pointer to STARTUPINFO structure.
+ &pi ); // Pointer to PROCESS_INFORMATION structure.
+ delete cmdline;
+ if (! result)
+ return -1;
+
+ // Wait until child process exits.
+ WaitForSingleObject(pi.hProcess, INFINITE);
+
+ DWORD exitcode;
+ ::GetExitCodeProcess(pi.hProcess, &exitcode);
+
+ // Close process and thread handles.
+ CloseHandle(pi.hProcess);
+ CloseHandle(pi.hThread);
+
+ return exitcode;
}
#endif
@@ -214,9 +213,9 @@ int Instance::launch_and_wait()
void Instance::fork_and_monitor()
{
log_info("starting instance %s", options.instance_name);
-
- int result= launch_and_wait();
- if (result == -1) return;
+
+ if (launch_and_wait())
+ return; /* error is logged */
/* set instance state to crashed */
pthread_mutex_lock(&LOCK_instance);
@@ -233,9 +232,6 @@ void Instance::fork_and_monitor()
pthread_cond_signal(&instance_map->guardian->COND_guardian);
/* thread exits */
return;
-
- /* we should never end up here */
- DBUG_ASSERT(0);
}
@@ -268,9 +264,9 @@ bool Instance::is_running()
MYSQL mysql;
uint port= 0;
const char *socket= NULL;
- const char *password= "check_connection";
- const char *username= "MySQL_Instance_Manager";
- const char *access_denied_message= "Access denied for user";
+ static const char *password= "check_connection";
+ static const char *username= "MySQL_Instance_Manager";
+ static const char *access_denied_message= "Access denied for user";
bool return_val;
if (options.mysqld_port)
@@ -299,15 +295,8 @@ bool Instance::is_running()
return_val= TRUE; /* server is alive */
}
else
- {
- if (!strncmp(access_denied_message, mysql_error(&mysql),
- sizeof(access_denied_message)-1))
- {
- return_val= TRUE;
- }
- else
- return_val= FALSE;
- }
+ return_val= test(!strncmp(access_denied_message, mysql_error(&mysql),
+ sizeof(access_denied_message) - 1));
mysql_close(&mysql);
pthread_mutex_unlock(&LOCK_instance);
@@ -370,53 +359,53 @@ err:
BOOL SafeTerminateProcess(HANDLE hProcess, UINT uExitCode)
{
- DWORD dwTID, dwCode, dwErr = 0;
+ DWORD dwTID, dwCode, dwErr= 0;
HANDLE hProcessDup= INVALID_HANDLE_VALUE;
HANDLE hRT= NULL;
HINSTANCE hKernel= GetModuleHandle("Kernel32");
BOOL bSuccess= FALSE;
BOOL bDup= DuplicateHandle(GetCurrentProcess(),
- hProcess, GetCurrentProcess(), &hProcessDup,
+ hProcess, GetCurrentProcess(), &hProcessDup,
PROCESS_ALL_ACCESS, FALSE, 0);
// Detect the special case where the process is
// already dead...
if (GetExitCodeProcess((bDup) ? hProcessDup : hProcess, &dwCode) &&
- (dwCode == STILL_ACTIVE))
+ (dwCode == STILL_ACTIVE))
{
- FARPROC pfnExitProc;
+ FARPROC pfnExitProc;
- pfnExitProc= GetProcAddress(hKernel, "ExitProcess");
+ pfnExitProc= GetProcAddress(hKernel, "ExitProcess");
- hRT= CreateRemoteThread((bDup) ? hProcessDup : hProcess, NULL, 0,
- (LPTHREAD_START_ROUTINE)pfnExitProc,
- (PVOID)uExitCode, 0, &dwTID);
+ hRT= CreateRemoteThread((bDup) ? hProcessDup : hProcess, NULL, 0,
+ (LPTHREAD_START_ROUTINE)pfnExitProc,
+ (PVOID)uExitCode, 0, &dwTID);
- if (hRT == NULL)
- dwErr= GetLastError();
+ if (hRT == NULL)
+ dwErr= GetLastError();
}
else
- dwErr= ERROR_PROCESS_ABORTED;
+ dwErr= ERROR_PROCESS_ABORTED;
if (hRT)
{
- // Must wait process to terminate to
- // guarantee that it has exited...
- WaitForSingleObject((bDup) ? hProcessDup : hProcess, INFINITE);
+ // Must wait process to terminate to
+ // guarantee that it has exited...
+ WaitForSingleObject((bDup) ? hProcessDup : hProcess, INFINITE);
- CloseHandle(hRT);
- bSuccess= TRUE;
+ CloseHandle(hRT);
+ bSuccess= TRUE;
}
if (bDup)
- CloseHandle(hProcessDup);
+ CloseHandle(hProcessDup);
if (!bSuccess)
- SetLastError(dwErr);
+ SetLastError(dwErr);
return bSuccess;
-}
+}
int kill(pid_t pid, int signum)
{
diff --git a/server-tools/instance-manager/listener.cc b/server-tools/instance-manager/listener.cc
index 8fcf23a7397..54b58536f0f 100644
--- a/server-tools/instance-manager/listener.cc
+++ b/server-tools/instance-manager/listener.cc
@@ -108,11 +108,11 @@ void Listener_thread::run()
FD_ZERO(&read_fds);
/* I. prepare 'listen' sockets */
- if (create_tcp_socket())
+ if (create_tcp_socket())
goto err;
#ifndef __WIN__
- if (create_unix_socket(unix_socket_address))
+ if (create_unix_socket(unix_socket_address))
goto err;
#endif
@@ -133,12 +133,12 @@ void Listener_thread::run()
int rc= select(n, &read_fds_arg, 0, 0, 0);
- if (rc == -1 && errno != EINTR)
- {
- log_error("Listener_thread::run(): select() failed, %s",
- strerror(errno));
- continue;
- }
+ if (rc == -1 && errno != EINTR)
+ {
+ log_error("Listener_thread::run(): select() failed, %s",
+ strerror(errno));
+ continue;
+ }
for (int socket_index= 0; socket_index < num_sockets; socket_index++)
@@ -150,8 +150,8 @@ void Listener_thread::run()
/* accept may return -1 (failure or spurious wakeup) */
if (client_fd >= 0) // connection established
{
- Vio *vio = vio_new(client_fd, socket_index==0?VIO_TYPE_SOCKET:
- VIO_TYPE_TCPIP, socket_index==0?1:0);
+ Vio *vio= vio_new(client_fd, socket_index==0?VIO_TYPE_SOCKET:
+ VIO_TYPE_TCPIP, socket_index==0?1:0);
if (vio != 0)
handle_new_mysql_connection(vio);
else
@@ -212,7 +212,7 @@ void set_no_inherit(int socket)
int Listener_thread::create_tcp_socket()
{
/* value to be set by setsockopt */
- int arg= 1;
+ int arg= 1;
int ip_socket= socket(AF_INET, SOCK_STREAM, 0);
if (ip_socket == INVALID_SOCKET)
@@ -236,11 +236,11 @@ int Listener_thread::create_tcp_socket()
uint im_port= options.port_number;
ip_socket_address.sin_family= AF_INET;
- ip_socket_address.sin_addr.s_addr = im_bind_addr;
+ ip_socket_address.sin_addr.s_addr= im_bind_addr;
ip_socket_address.sin_port= (unsigned short)
- htons((unsigned short) im_port);
+ htons((unsigned short) im_port);
setsockopt(ip_socket, SOL_SOCKET, SO_REUSEADDR, (char*) &arg, sizeof(arg));
if (bind(ip_socket, (struct sockaddr *) &ip_socket_address,
@@ -273,8 +273,8 @@ int Listener_thread::create_tcp_socket()
}
#ifndef __WIN__
-int Listener_thread::create_unix_socket(
- struct sockaddr_un &unix_socket_address)
+int Listener_thread::create_unix_socket(struct sockaddr_un
+ &unix_socket_address)
{
int unix_socket= socket(AF_UNIX, SOCK_STREAM, 0);
if (unix_socket == INVALID_SOCKET)
@@ -297,20 +297,20 @@ int Listener_thread::create_unix_socket(
*/
mode_t old_mask= umask(0);
if (bind(unix_socket, (struct sockaddr *) &unix_socket_address,
- sizeof(unix_socket_address)))
+ sizeof(unix_socket_address)))
{
log_error("Listener_thread::run(): bind(unix socket) failed, "
- "socket file name is '%s', error '%s'",
- unix_socket_address.sun_path, strerror(errno));
+ "socket file name is '%s', error '%s'",
+ unix_socket_address.sun_path, strerror(errno));
close(unix_socket);
return -1;
}
-
+
umask(old_mask);
-
+
if (listen(unix_socket, LISTEN_BACK_LOG_SIZE))
{
- log_error("Listener_thread::run(): listen(unix socket) failed, %s",
+ log_error("Listener_thread::run(): listen(unix socket) failed, %s",
strerror(errno));
close(unix_socket);
return -1;
@@ -322,8 +322,9 @@ int Listener_thread::create_unix_socket(
/* make sure that instances won't be listening our sockets */
set_no_inherit(unix_socket);
- log_info("accepting connections on unix socket %s", unix_socket_address.sun_path);
- sockets[num_sockets++] = unix_socket;
+ log_info("accepting connections on unix socket %s",
+ unix_socket_address.sun_path);
+ sockets[num_sockets++]= unix_socket;
FD_SET(unix_socket, &read_fds);
return 0;
}
diff --git a/server-tools/instance-manager/manager.cc b/server-tools/instance-manager/manager.cc
index e3daca71898..09d30e1312f 100644
--- a/server-tools/instance-manager/manager.cc
+++ b/server-tools/instance-manager/manager.cc
@@ -238,20 +238,20 @@ void manager(const Options &options)
process_alarm(signo);
else
#endif
+ {
+ if (!guardian_thread.is_stopped())
+ {
+ bool stop_instances= true;
+ guardian_thread.request_shutdown(stop_instances);
+ pthread_cond_signal(&guardian_thread.COND_guardian);
+ }
+ else
{
- if (!guardian_thread.is_stopped())
- {
- bool stop_instances= true;
- guardian_thread.request_shutdown(stop_instances);
- pthread_cond_signal(&guardian_thread.COND_guardian);
- }
- else
- {
- thread_registry.deliver_shutdown();
- shutdown_complete= TRUE;
- }
+ thread_registry.deliver_shutdown();
+ shutdown_complete= TRUE;
}
}
+ }
err:
/* delete the pid file */
diff --git a/server-tools/instance-manager/options.cc b/server-tools/instance-manager/options.cc
index 86e21ec8a11..5d8483d3b0b 100644
--- a/server-tools/instance-manager/options.cc
+++ b/server-tools/instance-manager/options.cc
@@ -111,22 +111,23 @@ static struct my_option my_long_options[] =
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{ "default-mysqld-path", OPT_MYSQLD_PATH, "Where to look for MySQL"
- " Server binary.",
- (gptr *) &Options::default_mysqld_path, (gptr *) &Options::default_mysqld_path,
+ " Server binary.",
+ (gptr *) &Options::default_mysqld_path,
+ (gptr *) &Options::default_mysqld_path,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { "monitoring-interval", OPT_MONITORING_INTERVAL, "Interval to monitor instances"
- " in seconds.",
- (gptr *) &Options::monitoring_interval,
- (gptr *) &Options::monitoring_interval,
- 0, GET_UINT, REQUIRED_ARG, DEFAULT_MONITORING_INTERVAL,
- 0, 0, 0, 0, 0 },
+ { "monitoring-interval", OPT_MONITORING_INTERVAL, "Interval to monitor"
+ " instances in seconds.",
+ (gptr *) &Options::monitoring_interval,
+ (gptr *) &Options::monitoring_interval,
+ 0, GET_UINT, REQUIRED_ARG, DEFAULT_MONITORING_INTERVAL,
+ 0, 0, 0, 0, 0 },
#ifdef __WIN__
- { "install", OPT_INSTALL_SERVICE, "Install as system service.",
- (gptr *) &Options::install_as_service, (gptr*) &Options::install_as_service,
+ { "install", OPT_INSTALL_SERVICE, "Install as system service.",
+ (gptr *) &Options::install_as_service, (gptr*) &Options::install_as_service,
0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0 },
- { "remove", OPT_REMOVE_SERVICE, "Remove system service.",
- (gptr *)&Options::remove_service, (gptr*) &Options::remove_service,
+ { "remove", OPT_REMOVE_SERVICE, "Remove system service.",
+ (gptr *)&Options::remove_service, (gptr*) &Options::remove_service,
0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0},
#else
{ "run-as-service", OPT_RUN_AS_SERVICE,
@@ -134,12 +135,12 @@ static struct my_option my_long_options[] =
0, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0 },
{ "user", OPT_USER, "Username to start mysqlmanager",
- (gptr *) &Options::user,
- (gptr *) &Options::user,
- 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
+ (gptr *) &Options::user,
+ (gptr *) &Options::user,
+ 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
#endif
{ "version", 'V', "Output version information and exit.", 0, 0, 0,
- GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0 },
+ GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0 }
};
@@ -242,7 +243,7 @@ C_MODE_END
int Options::load(int argc, char **argv)
{
saved_argv= argv;
-
+
if (argc >= 2)
{
if (is_prefix(argv[1], "--defaults-file="))
@@ -254,19 +255,19 @@ int Options::load(int argc, char **argv)
{
/* the log is not enabled yet */
fprintf(stderr, "The --defaults-extra-file and --no-defaults options"
- " are not supported by\n"
- "Instance Manager. Program aborted.\n");
+ " are not supported by\n"
+ "Instance Manager. Program aborted.\n");
goto err;
}
}
#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
+
+ /*
+ 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)
{
@@ -274,7 +275,7 @@ int Options::load(int argc, char **argv)
static const char default_win_config_file_name[]= "\\my.ini";
if (!GetModuleFileName(NULL, windows_config_file,
- sizeof(windows_config_file)))
+ sizeof(windows_config_file)))
goto err;
filename= strrchr(windows_config_file, "\\");
@@ -316,7 +317,7 @@ char* change_extension(const char *src, const char *newext)
{
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);
@@ -327,9 +328,9 @@ char* change_extension(const char *src, const char *newext)
void Options::setup_windows_defaults(const char *progname)
{
- Options::password_file_name= default_password_file_name =
+ Options::password_file_name= default_password_file_name=
change_extension(progname, "passwd");
- Options::log_file_name= default_log_file_name =
+ Options::log_file_name= default_log_file_name=
change_extension(progname, "log");
}
diff --git a/server-tools/instance-manager/user_map.cc b/server-tools/instance-manager/user_map.cc
index df86d6a6915..1498f2fa947 100644
--- a/server-tools/instance-manager/user_map.cc
+++ b/server-tools/instance-manager/user_map.cc
@@ -15,7 +15,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#ifdef __GNUC__
-#pragma interface
+#pragma interface
#endif
#include "user_map.h"
@@ -25,6 +25,12 @@
#include "log.h"
+#ifdef __WIN__
+#define NEWLINE_LEN 2
+#else
+#define NEWLINE_LEN 1
+#endif
+
struct User
{
char user[USERNAME_LENGTH + 1];
@@ -36,8 +42,7 @@ struct User
int User::init(const char *line)
{
- const char *name_begin, *name_end;
- char *password;
+ const char *name_begin, *name_end, *password;
if (line[0] == '\'' || line[0] == '"')
{
@@ -45,7 +50,7 @@ int User::init(const char *line)
name_end= strchr(name_begin, line[0]);
if (name_end == 0 || name_end[1] != ':')
goto err;
- password= (char*)(name_end + 2);
+ password= name_end + 2;
}
else
{
@@ -53,19 +58,14 @@ int User::init(const char *line)
name_end= strchr(name_begin, ':');
if (name_end == 0)
goto err;
- password= (char*)(name_end + 1);
+ password= name_end + 1;
}
user_length= name_end - name_begin;
if (user_length > USERNAME_LENGTH)
goto err;
/* assume that newline characater is present */
- if (password[strlen(password)-2] == '\r')
- {
- password[strlen(password)-2]= '\n';
- password[strlen(password)-1]= 0;
- }
- if (strlen(password) != SCRAMBLED_PASSWORD_CHAR_LENGTH + 1)
+ if (strlen(password) != SCRAMBLED_PASSWORD_CHAR_LENGTH + NEWLINE_LEN)
goto err;
memcpy(user, name_begin, user_length);
@@ -101,7 +101,7 @@ C_MODE_END
int User_map::init()
{
- enum { START_HASH_SIZE = 16 };
+ enum { START_HASH_SIZE= 16 };
if (hash_init(&hash, default_charset_info, START_HASH_SIZE, 0, 0,
get_user_key, delete_user, 0))
return 1;