Просмотр исходного кода

vfs_real: Add CreateFullPath to Create* operations

Zach Hilman 8 лет назад
Родитель
Сommit
8f06a0f898
2 измененных файлов с 6 добавлено и 13 удалено
  1. 6 12
      src/core/file_sys/vfs_real.cpp
  2. 0 1
      src/core/file_sys/vfs_real.h

+ 6 - 12
src/core/file_sys/vfs_real.cpp

@@ -83,12 +83,9 @@ VirtualFile RealVfsFilesystem::OpenFile(std::string_view path_, Mode perms) {
 
 
 VirtualFile RealVfsFilesystem::CreateFile(std::string_view path_, Mode perms) {
 VirtualFile RealVfsFilesystem::CreateFile(std::string_view path_, Mode perms) {
     const auto path = FileUtil::SanitizePath(path_, FileUtil::DirectorySeparator::PlatformDefault);
     const auto path = FileUtil::SanitizePath(path_, FileUtil::DirectorySeparator::PlatformDefault);
-    if (!FileUtil::Exists(path))
-        return nullptr;
-    if (!FileUtil::CreateFullPath(
-            FileUtil::SanitizePath(path, FileUtil::DirectorySeparator::ForwardSlash)))
-        return nullptr;
-    if (!FileUtil::CreateEmptyFile(path))
+    const auto path_fwd = FileUtil::SanitizePath(path, FileUtil::DirectorySeparator::ForwardSlash);
+    if (!FileUtil::Exists(path) && !FileUtil::CreateFullPath(path_fwd) &&
+        !FileUtil::CreateEmptyFile(path))
         return nullptr;
         return nullptr;
     return OpenFile(path, perms);
     return OpenFile(path, perms);
 }
 }
@@ -145,12 +142,9 @@ VirtualDir RealVfsFilesystem::OpenDirectory(std::string_view path_, Mode perms)
 
 
 VirtualDir RealVfsFilesystem::CreateDirectory(std::string_view path_, Mode perms) {
 VirtualDir RealVfsFilesystem::CreateDirectory(std::string_view path_, Mode perms) {
     const auto path = FileUtil::SanitizePath(path_, FileUtil::DirectorySeparator::PlatformDefault);
     const auto path = FileUtil::SanitizePath(path_, FileUtil::DirectorySeparator::PlatformDefault);
-    if (!FileUtil::Exists(path))
-        return nullptr;
-    if (!FileUtil::CreateFullPath(
-            FileUtil::SanitizePath(path, FileUtil::DirectorySeparator::ForwardSlash)))
-        return nullptr;
-    if (!FileUtil::CreateDir(path))
+    const auto path_fwd = FileUtil::SanitizePath(path, FileUtil::DirectorySeparator::ForwardSlash);
+    if (!FileUtil::Exists(path) && !FileUtil::CreateFullPath(path_fwd) &&
+        !FileUtil::CreateEmptyFile(path))
         return nullptr;
         return nullptr;
     // Cannot use make_shared as RealVfsDirectory constructor is private
     // Cannot use make_shared as RealVfsDirectory constructor is private
     return std::shared_ptr<RealVfsDirectory>(new RealVfsDirectory(*this, path, perms));
     return std::shared_ptr<RealVfsDirectory>(new RealVfsDirectory(*this, path, perms));

+ 0 - 1
src/core/file_sys/vfs_real.h

@@ -5,7 +5,6 @@
 #pragma once
 #pragma once
 
 
 #include <string_view>
 #include <string_view>
-
 #include <boost/container/flat_map.hpp>
 #include <boost/container/flat_map.hpp>
 #include "common/file_util.h"
 #include "common/file_util.h"
 #include "core/file_sys/mode.h"
 #include "core/file_sys/mode.h"