Revert "Don't crash if the log file can't be opened"

We don't have a stdout to _dup2() into when run as a service.

This reverts commit 16ddcb82d94dd99a8bee8887434acd528411773c.
This commit is contained in:
Cameron Gutman 2022-04-16 21:19:15 -05:00
parent 41ab166b8a
commit c4291ff47a

View File

@ -6,8 +6,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <io.h>
#include <fcntl.h>
#pragma comment(lib, "ws2_32")
#include <WinSock2.h>
@ -847,27 +845,15 @@ void ResetLogFile(bool standaloneExe)
ExpandEnvironmentStringsA("%ProgramData%\\MISS\\GSv6Fwd-old.log", oldLogFilePath, sizeof(oldLogFilePath));
ExpandEnvironmentStringsA("%ProgramData%\\MISS\\GSv6Fwd-current.log", currentLogFilePath, sizeof(currentLogFilePath));
// Close the existing stdout handle. This is important because otherwise
// it may still be open as stdout when we try to MoveFileEx below.
fclose(stdout);
// Rotate the current to the old log file
MoveFileExA(currentLogFilePath, oldLogFilePath, MOVEFILE_REPLACE_EXISTING);
// Open the new log file
HANDLE newLogHandle = CreateFileA(currentLogFilePath,
GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_DELETE,
nullptr,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
nullptr);
if (newLogHandle == INVALID_HANDLE_VALUE) {
return;
}
// Convert the HANDLE to an fd (transfers ownership too)
int fd = _open_osfhandle((intptr_t)newLogHandle, _O_WRONLY);
// Redirect stdout to this new file
_dup2(fd, _fileno(stdout));
_close(fd);
freopen(currentLogFilePath, "w", stdout);
}
// Print a log header