mirror of
https://github.com/moonlight-stream/Internet-Hosting-Tool.git
synced 2025-07-02 07:45:31 +00:00
Don't crash if the log file can't be opened
This commit is contained in:
parent
28a5935ee7
commit
e9ddf91157
@ -1 +1 @@
|
|||||||
Subproject commit 21152240cfbf8c6a35c665575b8b25de7ed36b40
|
Subproject commit 16ddcb82d94dd99a8bee8887434acd528411773c
|
@ -11,6 +11,8 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <io.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
#include "relay.h"
|
#include "relay.h"
|
||||||
#include "..\version.h"
|
#include "..\version.h"
|
||||||
@ -834,15 +836,27 @@ void ResetLogFile(bool standaloneExe)
|
|||||||
ExpandEnvironmentStringsA("%ProgramData%\\MISS\\miss-old.log", oldLogFilePath, sizeof(oldLogFilePath));
|
ExpandEnvironmentStringsA("%ProgramData%\\MISS\\miss-old.log", oldLogFilePath, sizeof(oldLogFilePath));
|
||||||
ExpandEnvironmentStringsA("%ProgramData%\\MISS\\miss-current.log", currentLogFilePath, sizeof(currentLogFilePath));
|
ExpandEnvironmentStringsA("%ProgramData%\\MISS\\miss-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
|
// Rotate the current to the old log file
|
||||||
MoveFileExA(currentLogFilePath, oldLogFilePath, MOVEFILE_REPLACE_EXISTING);
|
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
|
// Redirect stdout to this new file
|
||||||
freopen(currentLogFilePath, "w", stdout);
|
_dup2(fd, _fileno(stdout));
|
||||||
|
_close(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Print a log header
|
// Print a log header
|
||||||
|
Loading…
x
Reference in New Issue
Block a user