Added close_handle().
[nssm.git] / io.cpp
diff --git a/io.cpp b/io.cpp
index ce455a3..3460cdc 100644 (file)
--- a/io.cpp
+++ b/io.cpp
@@ -83,6 +83,19 @@ static inline void write_bom(logger_t *logger, unsigned long *out) {
   }\r
 }\r
 \r
+void close_handle(HANDLE *handle, HANDLE *remember) {\r
+  if (remember) *remember = INVALID_HANDLE_VALUE;\r
+  if (! handle) return;\r
+  if (! *handle) return;\r
+  CloseHandle(*handle);\r
+  if (remember) *remember = *handle;\r
+  *handle = 0;\r
+}\r
+\r
+void close_handle(HANDLE *handle) {\r
+  close_handle(handle, NULL);\r
+}\r
+\r
 /* Get path, share mode, creation disposition and flags for a stream. */\r
 int get_createfile_parameters(HKEY key, TCHAR *prefix, TCHAR *path, unsigned long *sharing, unsigned long default_sharing, unsigned long *disposition, unsigned long default_disposition, unsigned long *flags, unsigned long default_flags, bool *copy_and_truncate) {\r
   TCHAR value[NSSM_STDIO_LENGTH];\r