diff options
Diffstat (limited to '')
| -rw-r--r-- | src/common/file_util.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp index c4d738bb6..7752c0421 100644 --- a/src/common/file_util.cpp +++ b/src/common/file_util.cpp | |||
| @@ -114,20 +114,41 @@ bool CreateDir(const fs::path& path) { | |||
| 114 | return true; | 114 | return true; |
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | bool CreateFullPath(const fs::path& path) { | 117 | bool CreateDirs(const fs::path& path) { |
| 118 | LOG_TRACE(Common_Filesystem, "path {}", path.string()); | 118 | LOG_TRACE(Common_Filesystem, "path {}", path.string()); |
| 119 | 119 | ||
| 120 | if (Exists(path)) { | ||
| 121 | LOG_DEBUG(Common_Filesystem, "path exists {}", path.string()); | ||
| 122 | return true; | ||
| 123 | } | ||
| 124 | |||
| 120 | std::error_code ec; | 125 | std::error_code ec; |
| 121 | const bool success = fs::create_directories(path, ec); | 126 | const bool success = fs::create_directories(path, ec); |
| 122 | 127 | ||
| 123 | if (!success) { | 128 | if (!success) { |
| 124 | LOG_ERROR(Common_Filesystem, "Unable to create full path: {}", ec.message()); | 129 | LOG_ERROR(Common_Filesystem, "Unable to create directories: {}", ec.message()); |
| 125 | return false; | 130 | return false; |
| 126 | } | 131 | } |
| 127 | 132 | ||
| 128 | return true; | 133 | return true; |
| 129 | } | 134 | } |
| 130 | 135 | ||
| 136 | bool CreateFullPath(const fs::path& path) { | ||
| 137 | LOG_TRACE(Common_Filesystem, "path {}", path); | ||
| 138 | |||
| 139 | // Removes trailing slashes and turns any '\' into '/' | ||
| 140 | const auto new_path = SanitizePath(path.string(), DirectorySeparator::ForwardSlash); | ||
| 141 | |||
| 142 | if (new_path.rfind('.') == std::string::npos) { | ||
| 143 | // The path is a directory | ||
| 144 | return CreateDirs(new_path); | ||
| 145 | } else { | ||
| 146 | // The path is a file | ||
| 147 | // Creates directory preceding the last '/' | ||
| 148 | return CreateDirs(new_path.substr(0, new_path.rfind('/'))); | ||
| 149 | } | ||
| 150 | } | ||
| 151 | |||
| 131 | bool Rename(const fs::path& src, const fs::path& dst) { | 152 | bool Rename(const fs::path& src, const fs::path& dst) { |
| 132 | LOG_TRACE(Common_Filesystem, "{} --> {}", src.string(), dst.string()); | 153 | LOG_TRACE(Common_Filesystem, "{} --> {}", src.string(), dst.string()); |
| 133 | 154 | ||