aboutsummaryrefslogtreecommitdiff
path: root/src/common/fs/file.cpp
diff options
context:
space:
mode:
authorMorph <39850852+Morph1984@users.noreply.github.com>2021-06-19 03:49:11 -0400
committerMorph <39850852+Morph1984@users.noreply.github.com>2021-06-22 15:06:58 -0400
commit76b2313b25e2fd33a508f63137d5113e1ca85150 (patch)
treeda79f542733f16ca27b834da5805a75503b1019a /src/common/fs/file.cpp
parentcf0b9d1de2dd895de3ebc08b6399d8239f7096f7 (diff)
common: fs: Amend IsFile check in FileOpen / (Write/Append)StringToFile
This check was preventing files with the Write or Append file access modes from being created, as per the documented behavior in FileAccessMode. This amends the check to test for the existence of a filesystem object prior to checking whether it is a regular file. Thanks to liushuyu for pointing out that removing the check altogether would not guard against attempting to open non-regular files such as directories, symlinks, FIFO (pipes), sockets, block devices, or character devices. The documentation has also been updated for these functions to clarify that a file refers to a regular file.
Diffstat (limited to 'src/common/fs/file.cpp')
-rw-r--r--src/common/fs/file.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/common/fs/file.cpp b/src/common/fs/file.cpp
index 710e88b394..077f349950 100644
--- a/src/common/fs/file.cpp
+++ b/src/common/fs/file.cpp
@@ -172,7 +172,7 @@ std::string ReadStringFromFile(const std::filesystem::path& path, FileType type)
size_t WriteStringToFile(const std::filesystem::path& path, FileType type,
std::string_view string) {
- if (!IsFile(path)) {
+ if (Exists(path) && !IsFile(path)) {
return 0;
}
@@ -183,7 +183,7 @@ size_t WriteStringToFile(const std::filesystem::path& path, FileType type,
size_t AppendStringToFile(const std::filesystem::path& path, FileType type,
std::string_view string) {
- if (!IsFile(path)) {
+ if (Exists(path) && !IsFile(path)) {
return 0;
}