diff options
| author | 2021-05-25 19:32:56 -0400 | |
|---|---|---|
| committer | 2021-05-25 19:32:56 -0400 | |
| commit | 065867e2c24e9856c360fc2d6b9a86c92aedc43e (patch) | |
| tree | 7964e85ef4f01a3c2b8f44e850f37b384405b930 /src/common/logging/backend.cpp | |
| parent | Merge pull request #6349 from german77/suppress_config_warning (diff) | |
| download | yuzu-065867e2c24e9856c360fc2d6b9a86c92aedc43e.tar.gz yuzu-065867e2c24e9856c360fc2d6b9a86c92aedc43e.tar.xz yuzu-065867e2c24e9856c360fc2d6b9a86c92aedc43e.zip | |
common: fs: Rework the Common Filesystem interface to make use of std::filesystem (#6270)
* common: fs: fs_types: Create filesystem types
Contains various filesystem types used by the Common::FS library
* common: fs: fs_util: Add std::string to std::u8string conversion utility
* common: fs: path_util: Add utlity functions for paths
Contains various utility functions for getting or manipulating filesystem paths used by the Common::FS library
* common: fs: file: Rewrite the IOFile implementation
* common: fs: Reimplement Common::FS library using std::filesystem
* common: fs: fs_paths: Add fs_paths to replace common_paths
* common: fs: path_util: Add the rest of the path functions
* common: Remove the previous Common::FS implementation
* general: Remove unused fs includes
* string_util: Remove unused function and include
* nvidia_flags: Migrate to the new Common::FS library
* settings: Migrate to the new Common::FS library
* logging: backend: Migrate to the new Common::FS library
* core: Migrate to the new Common::FS library
* perf_stats: Migrate to the new Common::FS library
* reporter: Migrate to the new Common::FS library
* telemetry_session: Migrate to the new Common::FS library
* key_manager: Migrate to the new Common::FS library
* bis_factory: Migrate to the new Common::FS library
* registered_cache: Migrate to the new Common::FS library
* xts_archive: Migrate to the new Common::FS library
* service: acc: Migrate to the new Common::FS library
* applets/profile: Migrate to the new Common::FS library
* applets/web: Migrate to the new Common::FS library
* service: filesystem: Migrate to the new Common::FS library
* loader: Migrate to the new Common::FS library
* gl_shader_disk_cache: Migrate to the new Common::FS library
* nsight_aftermath_tracker: Migrate to the new Common::FS library
* vulkan_library: Migrate to the new Common::FS library
* configure_debug: Migrate to the new Common::FS library
* game_list_worker: Migrate to the new Common::FS library
* config: Migrate to the new Common::FS library
* configure_filesystem: Migrate to the new Common::FS library
* configure_per_game_addons: Migrate to the new Common::FS library
* configure_profile_manager: Migrate to the new Common::FS library
* configure_ui: Migrate to the new Common::FS library
* input_profiles: Migrate to the new Common::FS library
* yuzu_cmd: config: Migrate to the new Common::FS library
* yuzu_cmd: Migrate to the new Common::FS library
* vfs_real: Migrate to the new Common::FS library
* vfs: Migrate to the new Common::FS library
* vfs_libzip: Migrate to the new Common::FS library
* service: bcat: Migrate to the new Common::FS library
* yuzu: main: Migrate to the new Common::FS library
* vfs_real: Delete the contents of an existing file in CreateFile
Current usages of CreateFile expect to delete the contents of an existing file, retain this behavior for now.
* input_profiles: Don't iterate the input profile dir if it does not exist
Silences an error produced in the log if the directory does not exist.
* game_list_worker: Skip parsing file if the returned VfsFile is nullptr
Prevents crashes in GetLoader when the virtual file is nullptr
* common: fs: Validate paths for path length
* service: filesystem: Open the mod load directory as read only
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 | ||