Handle second parameter of unformat_double_null().
[nssm.git] / settings.cpp
index 45e0a58..f50dcc4 100644 (file)
@@ -452,7 +452,9 @@ static int setting_get_priority(const TCHAR *service_name, void *param, const TC
 \r
   unsigned long constant;\r
   switch (get_number(key, (TCHAR *) name, &constant, false)) {\r
-    case 0: return value_from_string(name, value, (const TCHAR *) default_value);\r
+    case 0:\r
+      if (value_from_string(name, value, (const TCHAR *) default_value) == -1) return -1;\r
+      return 0;\r
     case -1: return -1;\r
   }\r
 \r
@@ -727,20 +729,20 @@ int native_get_displayname(const TCHAR *service_name, void *param, const TCHAR *
 }\r
 \r
 int native_set_environment(const TCHAR *service_name, void *param, const TCHAR *name, void *default_value, value_t *value, const TCHAR *additional) {\r
-  HKEY key = open_service_registry(service_name, KEY_SET_VALUE, false);\r
+  HKEY key = open_service_registry(service_name, KEY_SET_VALUE, true);\r
   if (! key) return -1;\r
 \r
-  int ret = setting_set_environment(service_name, (void *) key, NSSM_NATIVE_ENVIRONMENT, default_value, value, additional);\r
+  int ret = setting_set_environment(service_name, (void *) key, name, default_value, value, additional);\r
   RegCloseKey(key);\r
   return ret;\r
 }\r
 \r
 int native_get_environment(const TCHAR *service_name, void *param, const TCHAR *name, void *default_value, value_t *value, const TCHAR *additional) {\r
-  HKEY key = open_service_registry(service_name, KEY_READ, false);\r
+  HKEY key = open_service_registry(service_name, KEY_READ, true);\r
   if (! key) return -1;\r
 \r
   ZeroMemory(value, sizeof(value_t));\r
-  int ret = setting_get_environment(service_name, (void *) key, NSSM_NATIVE_ENVIRONMENT, default_value, value, additional);\r
+  int ret = setting_get_environment(service_name, (void *) key, name, default_value, value, additional);\r
   RegCloseKey(key);\r
   return ret;\r
 }\r
@@ -1110,6 +1112,7 @@ settings_t settings[] = {
   { NSSM_REG_KILL_THREADS_GRACE_PERIOD, REG_DWORD, (void *) NSSM_KILL_THREADS_GRACE_PERIOD, false, 0, setting_set_number, setting_get_number },\r
   { NSSM_REG_KILL_PROCESS_TREE, REG_DWORD, (void *) 1, false, 0, setting_set_number, setting_get_number },\r
   { NSSM_REG_THROTTLE, REG_DWORD, (void *) NSSM_RESET_THROTTLE_RESTART, false, 0, setting_set_number, setting_get_number },\r
+  { NSSM_REG_HOOK_SHARE_OUTPUT_HANDLES, REG_DWORD, 0, false, 0, setting_set_number, setting_get_number },\r
   { NSSM_REG_ROTATE, REG_DWORD, 0, false, 0, setting_set_number, setting_get_number },\r
   { NSSM_REG_ROTATE_ONLINE, REG_DWORD, 0, false, 0, setting_set_number, setting_get_number },\r
   { NSSM_REG_ROTATE_SECONDS, REG_DWORD, 0, false, 0, setting_set_number, setting_get_number },\r