diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 668ef033414..2998d367a36 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -3302,12 +3302,14 @@ default_service_handling(char **argv, if (Service.got_service_option(argv, "install")) { - Service.Install(1, servicename, displayname, path_and_service, account_name); + Service.Install(1, servicename, displayname, path_and_service, + account_name); return 0; } if (Service.got_service_option(argv, "install-manual")) { - Service.Install(0, servicename, displayname, path_and_service, account_name); + Service.Install(0, servicename, displayname, path_and_service, + account_name); return 0; } if (Service.got_service_option(argv, "remove")) @@ -3327,7 +3329,7 @@ int main(int argc, char **argv) application PID e.g.: MySQLShutdown1890; MySQLShutdown2342 */ int10_to_str((int) GetCurrentProcessId(),strmov(shutdown_event_name, - "MySQLShutdown"), 10); + "MySQLShutdown"), 10); /* Must be initialized early for comparison of service name */ system_charset_info= &my_charset_utf8_general_ci; @@ -3361,7 +3363,8 @@ int main(int argc, char **argv) } else if (argc == 3) /* install or remove any optional service */ { - if (!default_service_handling(argv, argv[2], argv[2], file_path, "", NULL)) + if (!default_service_handling(argv, argv[2], argv[2], file_path, "", + NULL)) return 0; if (Service.IsService(argv[2])) { @@ -3388,24 +3391,20 @@ int main(int argc, char **argv) --defaults-file=file, but that was not enforced in 4.1, so we don't enforce it here.) */ - char *extra_opt= NULL; - char *account_name = NULL; + const char *extra_opt= NullS; + const char *account_name = NullS; int index; for (index = 3; index < argc; index++) { - if (strncmp(argv[index], "--local-service", 15) == 0) - { - account_name=(char*)malloc(27); - strmov(account_name, "NT AUTHORITY\\LocalService\0"); - } + if (!strcmp(argv[index], "--local-service")) + account_name= "NT AUTHORITY\\LocalService"; else - { extra_opt= argv[index]; - } } - if (argc != 5 || account_name) - if (!default_service_handling(argv, argv[2], argv[2], file_path, extra_opt, account_name)) + if (argc == 4 || account_name) + if (!default_service_handling(argv, argv[2], argv[2], file_path, + extra_opt, account_name)) return 0; } else if (argc == 1 && Service.IsService(MYSQL_SERVICENAME)) diff --git a/sql/nt_servc.h b/sql/nt_servc.h index 6d74eaccea2..a3c12569114 100644 --- a/sql/nt_servc.h +++ b/sql/nt_servc.h @@ -48,8 +48,9 @@ class NTService //service install / un-install - BOOL Install(int startType,LPCSTR szInternName,LPCSTR szDisplayName,LPCSTR szFullPath, - LPCSTR szAccountName=NULL,LPCSTR szPassword=NULL); + BOOL Install(int startType,LPCSTR szInternName,LPCSTR szDisplayName, + LPCSTR szFullPath, LPCSTR szAccountName=NULL, + LPCSTR szPassword=NULL); BOOL SeekStatus(LPCSTR szInternName, int OperationType); BOOL Remove(LPCSTR szInternName); BOOL IsService(LPCSTR ServiceName);