+ /* Try to get priority - may fail. */\r
+ unsigned long priority;\r
+ if (get_number(key, NSSM_REG_PRIORITY, &priority, false) == 1) {\r
+ if (priority == (priority & priority_mask())) service->priority = priority;\r
+ else log_event(EVENTLOG_WARNING_TYPE, NSSM_EVENT_BOGUS_PRIORITY, service->name, NSSM_REG_PRIORITY, 0);\r
+ }\r
+\r
+ /* Try to get hook I/O sharing - may fail. */\r
+ unsigned long hook_share_output_handles;\r
+ if (get_number(key, NSSM_REG_HOOK_SHARE_OUTPUT_HANDLES, &hook_share_output_handles, false) == 1) {\r
+ if (hook_share_output_handles) service->hook_share_output_handles = true;\r
+ else service->hook_share_output_handles = false;\r
+ }\r
+ else hook_share_output_handles = false;\r
+ /* Try to get file rotation settings - may fail. */\r
+ unsigned long rotate_files;\r
+ if (get_number(key, NSSM_REG_ROTATE, &rotate_files, false) == 1) {\r
+ if (rotate_files) service->rotate_files = true;\r
+ else service->rotate_files = false;\r
+ }\r
+ else service->rotate_files = false;\r
+ if (get_number(key, NSSM_REG_ROTATE_ONLINE, &rotate_files, false) == 1) {\r
+ if (rotate_files) service->rotate_stdout_online = service->rotate_stderr_online = true;\r
+ else service->rotate_stdout_online = service->rotate_stderr_online = false;\r
+ }\r
+ else service->rotate_stdout_online = service->rotate_stderr_online = false;\r
+ /* Hook I/O sharing and online rotation need a pipe. */\r
+ service->use_stdout_pipe = service->rotate_stdout_online || hook_share_output_handles;\r
+ service->use_stderr_pipe = service->rotate_stderr_online || hook_share_output_handles;\r
+ if (get_number(key, NSSM_REG_ROTATE_SECONDS, &service->rotate_seconds, false) != 1) service->rotate_seconds = 0;\r
+ if (get_number(key, NSSM_REG_ROTATE_BYTES_LOW, &service->rotate_bytes_low, false) != 1) service->rotate_bytes_low = 0;\r
+ if (get_number(key, NSSM_REG_ROTATE_BYTES_HIGH, &service->rotate_bytes_high, false) != 1) service->rotate_bytes_high = 0;\r
+ override_milliseconds(service->name, key, NSSM_REG_ROTATE_DELAY, &service->rotate_delay, NSSM_ROTATE_DELAY, NSSM_EVENT_BOGUS_THROTTLE);\r
+\r
+ /* Try to get force new console setting - may fail. */\r
+ if (get_number(key, NSSM_REG_NO_CONSOLE, &service->no_console, false) != 1) service->no_console = 0;\r
+\r
+ /* Change to startup directory in case stdout/stderr are relative paths. */\r
+ TCHAR cwd[PATH_LENGTH];\r
+ GetCurrentDirectory(_countof(cwd), cwd);\r
+ SetCurrentDirectory(service->dir);\r
+\r