X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=nssm.cpp;h=2933dea9c4956d964fe4e5346872d9de0597146a;hb=70453ecb690ff5d6008677ced1016d0235bee329;hp=85add5f041ae3e36db3debaba84d454137de3a86;hpb=06a62a665e152850d082607eced4fa4654f1bf70;p=nssm.git diff --git a/nssm.cpp b/nssm.cpp index 85add5f..2933dea 100644 --- a/nssm.cpp +++ b/nssm.cpp @@ -1,5 +1,7 @@ #include "nssm.h" +extern unsigned long tls_index; + /* String function */ int str_equiv(const char *a, const char *b) { int i; @@ -39,15 +41,16 @@ int main(int argc, char **argv) { /* Undocumented: "run" is used to actually do service stuff */ if (! str_equiv(argv[1], NSSM_RUN)) exit(usage(2)); + /* Thread local storage for error message buffer */ + tls_index = TlsAlloc(); + /* Register messages */ create_messages(); /* Start service magic */ SERVICE_TABLE_ENTRY table[] = { { NSSM, service_main }, { 0, 0 } }; if (! StartServiceCtrlDispatcher(table)) { - char *message = error_string(GetLastError()); - eventprintf(EVENTLOG_ERROR_TYPE, NSSM_MESSAGE_DEFAULT, "StartServiceCtrlDispatcher() failed: %s", message); - if (message) LocalFree(message); + log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_DISPATCHER_FAILED, error_string(GetLastError()), 0); return 100; }