X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=nssm.cpp;h=2933dea9c4956d964fe4e5346872d9de0597146a;hb=3405b53f659462281af9f839062b9322d2093277;hp=f412579aa9a463e4339dbac1b1761c15daf7aafb;hpb=167b3e74003ed8f2b61bda7037f31447c488c29b;p=nssm.git diff --git a/nssm.cpp b/nssm.cpp index f412579..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,12 +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, "StartServiceCtrlDispatcher() failed: %s", message); - if (message) LocalFree(message); + log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_DISPATCHER_FAILED, error_string(GetLastError()), 0); return 100; }