diff options
Diffstat (limited to '')
| -rw-r--r-- | src/common/logging/backend.cpp | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp index 96efa977d..6aa8ac960 100644 --- a/src/common/logging/backend.cpp +++ b/src/common/logging/backend.cpp | |||
| @@ -11,13 +11,13 @@ | |||
| 11 | #include <mutex> | 11 | #include <mutex> |
| 12 | #include <thread> | 12 | #include <thread> |
| 13 | #include <vector> | 13 | #include <vector> |
| 14 | |||
| 14 | #ifdef _WIN32 | 15 | #ifdef _WIN32 |
| 15 | #include <share.h> // For _SH_DENYWR | ||
| 16 | #include <windows.h> // For OutputDebugStringW | 16 | #include <windows.h> // For OutputDebugStringW |
| 17 | #else | ||
| 18 | #define _SH_DENYWR 0 | ||
| 19 | #endif | 17 | #endif |
| 18 | |||
| 20 | #include "common/assert.h" | 19 | #include "common/assert.h" |
| 20 | #include "common/fs/fs.h" | ||
| 21 | #include "common/logging/backend.h" | 21 | #include "common/logging/backend.h" |
| 22 | #include "common/logging/log.h" | 22 | #include "common/logging/log.h" |
| 23 | #include "common/logging/text_formatter.h" | 23 | #include "common/logging/text_formatter.h" |
| @@ -148,19 +148,16 @@ void ColorConsoleBackend::Write(const Entry& entry) { | |||
| 148 | PrintColoredMessage(entry); | 148 | PrintColoredMessage(entry); |
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | FileBackend::FileBackend(const std::string& filename) { | 151 | FileBackend::FileBackend(const std::filesystem::path& filename) { |
| 152 | const auto old_filename = filename + ".old.txt"; | 152 | auto old_filename = filename; |
| 153 | old_filename += ".old.txt"; | ||
| 153 | 154 | ||
| 154 | if (FS::Exists(old_filename)) { | 155 | // Existence checks are done within the functions themselves. |
| 155 | FS::Delete(old_filename); | 156 | // We don't particularly care if these succeed or not. |
| 156 | } | 157 | void(FS::RemoveFile(old_filename)); |
| 157 | if (FS::Exists(filename)) { | 158 | void(FS::RenameFile(filename, old_filename)); |
| 158 | FS::Rename(filename, old_filename); | ||
| 159 | } | ||
| 160 | 159 | ||
| 161 | // _SH_DENYWR allows read only access to the file for other programs. | 160 | file = FS::IOFile(filename, FS::FileAccessMode::Write, FS::FileType::TextFile); |
| 162 | // It is #defined to 0 on other platforms | ||
| 163 | file = FS::IOFile(filename, "w", _SH_DENYWR); | ||
| 164 | } | 161 | } |
| 165 | 162 | ||
| 166 | void FileBackend::Write(const Entry& entry) { | 163 | void FileBackend::Write(const Entry& entry) { |
| @@ -181,7 +178,7 @@ void FileBackend::Write(const Entry& entry) { | |||
| 181 | 178 | ||
| 182 | bytes_written += file.WriteString(FormatLogMessage(entry).append(1, '\n')); | 179 | bytes_written += file.WriteString(FormatLogMessage(entry).append(1, '\n')); |
| 183 | if (entry.log_level >= Level::Error) { | 180 | if (entry.log_level >= Level::Error) { |
| 184 | file.Flush(); | 181 | void(file.Flush()); |
| 185 | } | 182 | } |
| 186 | } | 183 | } |
| 187 | 184 | ||