+/* Replacement for fopen(path, "a") that doesn't prevent other processes from
+ * reading the file */
+FILE *
+win32_open_logfile(const wchar_t *path)
+{
+ HANDLE h;
+ int fd;
+ FILE *fp;
+
+ h = CreateFile(path, FILE_APPEND_DATA, FILE_SHARE_VALID_FLAGS,
+ NULL, OPEN_ALWAYS, 0, NULL);
+ if (h == INVALID_HANDLE_VALUE)
+ return NULL;
+
+ fd = _open_osfhandle((intptr_t)h, O_APPEND);
+ if (fd < 0) {
+ CloseHandle(h);
+ return NULL;
+ }
+
+ fp = fdopen(fd, "a");
+ if (!fp) {
+ close(fd);
+ return NULL;
+ }
+
+ return fp;
+}
+