Fix event logging.
[nssm.git] / event.cpp
index 661761d..bd43be3 100644 (file)
--- a/event.cpp
+++ b/event.cpp
@@ -1,5 +1,15 @@
 #include "nssm.h"\r
 \r
+static char error_message[65535];\r
+\r
+/* Convert error code to error string - must call LocalFree() on return value */\r
+char *error_string(unsigned long error) {\r
+  if (! FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 0, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (char *) &error_message, sizeof(error_message), 0)) {\r
+    if (_snprintf(error_message, sizeof(error_message), "system error %lu", error) < 0) return 0;\r
+  }\r
+  return error_message;\r
+}\r
+\r
 /* Log a message to the Event Log */\r
 void log_event(unsigned short type, unsigned long id, ...) {\r
   va_list arg;\r