Allow specifying output streams.
[nssm.git] / registry.cpp
index d6cde23..eacde54 100644 (file)
@@ -219,7 +219,7 @@ int get_number(HKEY key, char *value, unsigned long *number) {
   return get_number(key, value, number, true);\r
 }\r
 \r
-int get_parameters(char *service_name, char *exe, int exelen, char *flags, int flagslen, char *dir, int dirlen, char **env, unsigned long *throttle_delay) {\r
+int get_parameters(char *service_name, char *exe, int exelen, char *flags, int flagslen, char *dir, int dirlen, char **env, unsigned long *throttle_delay, STARTUPINFO *si) {\r
   unsigned long ret;\r
 \r
   /* Get registry */\r
@@ -272,6 +272,13 @@ int get_parameters(char *service_name, char *exe, int exelen, char *flags, int f
   /* Try to get environment variables - may fail */\r
   set_environment(service_name, key, env);\r
 \r
+  /* Try to get stdout and stderr */\r
+  if (get_output_handles(key, si)) {\r
+    log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_GET_OUTPUT_HANDLES_FAILED, service_name, 0);\r
+    RegCloseKey(key);\r
+    return 5;\r
+  }\r
+\r
   /* Try to get throttle restart delay */\r
   unsigned long type = REG_DWORD;\r
   unsigned long buflen = sizeof(*throttle_delay);\r