Ensure logging threads exit.
[nssm.git] / io.h
1 #ifndef IO_H\r
2 #define IO_H\r
3 \r
4 #define NSSM_STDIN_SHARING FILE_SHARE_WRITE\r
5 #define NSSM_STDIN_DISPOSITION OPEN_EXISTING\r
6 #define NSSM_STDIN_FLAGS FILE_ATTRIBUTE_NORMAL\r
7 #define NSSM_STDOUT_SHARING (FILE_SHARE_READ | FILE_SHARE_WRITE)\r
8 #define NSSM_STDOUT_DISPOSITION OPEN_ALWAYS\r
9 #define NSSM_STDOUT_FLAGS FILE_ATTRIBUTE_NORMAL\r
10 #define NSSM_STDERR_SHARING (FILE_SHARE_READ | FILE_SHARE_WRITE)\r
11 #define NSSM_STDERR_DISPOSITION OPEN_ALWAYS\r
12 #define NSSM_STDERR_FLAGS FILE_ATTRIBUTE_NORMAL\r
13 \r
14 typedef struct {\r
15   TCHAR *service_name;\r
16   TCHAR *path;\r
17   unsigned long sharing;\r
18   unsigned long disposition;\r
19   unsigned long flags;\r
20   HANDLE read_handle;\r
21   HANDLE write_handle;\r
22   __int64 size;\r
23   unsigned long *tid_ptr;\r
24   unsigned long *rotate_online;\r
25   bool timestamp_log;\r
26   __int64 line_length;\r
27   bool copy_and_truncate;\r
28   unsigned long rotate_delay;\r
29 } logger_t;\r
30 \r
31 void close_handle(HANDLE *, HANDLE *);\r
32 void close_handle(HANDLE *);\r
33 int get_createfile_parameters(HKEY, TCHAR *, TCHAR *, unsigned long *, unsigned long, unsigned long *, unsigned long, unsigned long *, unsigned long, bool *);\r
34 int set_createfile_parameter(HKEY, TCHAR *, TCHAR *, unsigned long);\r
35 int delete_createfile_parameter(HKEY, TCHAR *, TCHAR *);\r
36 HANDLE write_to_file(TCHAR *, unsigned long, SECURITY_ATTRIBUTES *, unsigned long, unsigned long);\r
37 void rotate_file(TCHAR *, TCHAR *, unsigned long, unsigned long, unsigned long, unsigned long, bool);\r
38 int get_output_handles(nssm_service_t *, STARTUPINFO *);\r
39 int use_output_handles(nssm_service_t *, STARTUPINFO *);\r
40 void close_output_handles(STARTUPINFO *);\r
41 void cleanup_loggers(nssm_service_t *);\r
42 unsigned long WINAPI log_and_rotate(void *);\r
43 \r
44 #endif\r