X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=service.cpp;h=aff8cbb71e5563360976697ff5d93d64b4843290;hb=021655a300b7d9518d473207a30a61ecccf853e9;hp=b246443bf56394b87aed57288923f5cc27a5915c;hpb=2c60e5334f6df07bf42e7a91cf59638453eca473;p=nssm.git diff --git a/service.cpp b/service.cpp index b246443..aff8cbb 100644 --- a/service.cpp +++ b/service.cpp @@ -90,7 +90,7 @@ int pre_install_service(int argc, TCHAR **argv) { if (argc < 2) return nssm_gui(IDD_INSTALL, service); if (! service) { - print_message(stderr, NSSM_EVENT_OUT_OF_MEMORY, _T("service"), _T("pre_install_service()")); + print_message(stderr, NSSM_MESSAGE_OUT_OF_MEMORY, _T("service"), _T("pre_install_service()")); return 1; } _sntprintf_s(service->exe, _countof(service->exe), _TRUNCATE, _T("%s"), argv[1]); @@ -155,7 +155,7 @@ int pre_edit_service(int argc, TCHAR **argv) { if (error == ERROR_INSUFFICIENT_BUFFER) { qsc = (QUERY_SERVICE_CONFIG *) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, bufsize); if (! qsc) { - print_message(stderr, NSSM_EVENT_OUT_OF_MEMORY, _T("QUERY_SERVICE_CONFIG"), _T("pre_edit_service()"), 0); + print_message(stderr, NSSM_MESSAGE_OUT_OF_MEMORY, _T("QUERY_SERVICE_CONFIG"), _T("pre_edit_service()"), 0); return 4; } } @@ -199,12 +199,16 @@ int pre_edit_service(int argc, TCHAR **argv) { HeapFree(GetProcessHeap(), 0, qsc); CloseHandle(service->handle); CloseServiceHandle(services); - print_message(stderr, NSSM_EVENT_OUT_OF_MEMORY, _T("username"), _T("pre_edit_service()")); + print_message(stderr, NSSM_MESSAGE_OUT_OF_MEMORY, _T("username"), _T("pre_edit_service()")); return 4; } } _sntprintf_s(service->displayname, _countof(service->displayname), _TRUNCATE, _T("%s"), qsc->lpDisplayName); + /* Get the canonical service name. We open it case insensitively. */ + bufsize = _countof(service->name); + GetServiceKeyName(services, service->displayname, service->name, &bufsize); + /* Remember the executable in case it isn't NSSM. */ _sntprintf_s(service->image, _countof(service->image), _TRUNCATE, _T("%s"), qsc->lpBinaryPathName); HeapFree(GetProcessHeap(), 0, qsc); @@ -218,7 +222,7 @@ int pre_edit_service(int argc, TCHAR **argv) { if (! info) { CloseHandle(service->handle); CloseServiceHandle(services); - print_message(stderr, NSSM_EVENT_OUT_OF_MEMORY, _T("SERVICE_DELAYED_AUTO_START_INFO"), _T("pre_edit_service()")); + print_message(stderr, NSSM_MESSAGE_OUT_OF_MEMORY, _T("SERVICE_DELAYED_AUTO_START_INFO"), _T("pre_edit_service()")); return 5; } @@ -250,7 +254,7 @@ int pre_edit_service(int argc, TCHAR **argv) { if (! description) { CloseHandle(service->handle); CloseServiceHandle(services); - print_message(stderr, NSSM_EVENT_OUT_OF_MEMORY, _T("SERVICE_CONFIG_DESCRIPTION"), _T("pre_edit_service()")); + print_message(stderr, NSSM_MESSAGE_OUT_OF_MEMORY, _T("SERVICE_CONFIG_DESCRIPTION"), _T("pre_edit_service()")); return 6; } @@ -440,6 +444,12 @@ int remove_service(nssm_service_t *service) { return 3; } + /* Get the canonical service name. We open it case insensitively. */ + unsigned long bufsize = _countof(service->displayname); + GetServiceDisplayName(services, service->name, service->displayname, &bufsize); + bufsize = _countof(service->name); + GetServiceKeyName(services, service->displayname, service->name, &bufsize); + /* Try to delete the service */ if (! DeleteService(service->handle)) { print_message(stderr, NSSM_MESSAGE_DELETESERVICE_FAILED);