mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #5174 from ReinUsesLisp/fs-fix
common/file_util: Fix and deprecate CreateFullPath, add CreateDirs
This commit is contained in:
		
						commit
						5fe55b16a1
					
				@ -98,6 +98,11 @@ bool Delete(const fs::path& path) {
 | 
				
			|||||||
bool CreateDir(const fs::path& path) {
 | 
					bool CreateDir(const fs::path& path) {
 | 
				
			||||||
    LOG_TRACE(Common_Filesystem, "directory {}", path.string());
 | 
					    LOG_TRACE(Common_Filesystem, "directory {}", path.string());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (Exists(path)) {
 | 
				
			||||||
 | 
					        LOG_DEBUG(Common_Filesystem, "path exists {}", path.string());
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    std::error_code ec;
 | 
					    std::error_code ec;
 | 
				
			||||||
    const bool success = fs::create_directory(path, ec);
 | 
					    const bool success = fs::create_directory(path, ec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -109,20 +114,41 @@ bool CreateDir(const fs::path& path) {
 | 
				
			|||||||
    return true;
 | 
					    return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool CreateFullPath(const fs::path& path) {
 | 
					bool CreateDirs(const fs::path& path) {
 | 
				
			||||||
    LOG_TRACE(Common_Filesystem, "path {}", path.string());
 | 
					    LOG_TRACE(Common_Filesystem, "path {}", path.string());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (Exists(path)) {
 | 
				
			||||||
 | 
					        LOG_DEBUG(Common_Filesystem, "path exists {}", path.string());
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    std::error_code ec;
 | 
					    std::error_code ec;
 | 
				
			||||||
    const bool success = fs::create_directories(path, ec);
 | 
					    const bool success = fs::create_directories(path, ec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!success) {
 | 
					    if (!success) {
 | 
				
			||||||
        LOG_ERROR(Common_Filesystem, "Unable to create full path: {}", ec.message());
 | 
					        LOG_ERROR(Common_Filesystem, "Unable to create directories: {}", ec.message());
 | 
				
			||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return true;
 | 
					    return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CreateFullPath(const fs::path& path) {
 | 
				
			||||||
 | 
					    LOG_TRACE(Common_Filesystem, "path {}", path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Removes trailing slashes and turns any '\' into '/'
 | 
				
			||||||
 | 
					    const auto new_path = SanitizePath(path.string(), DirectorySeparator::ForwardSlash);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (new_path.rfind('.') == std::string::npos) {
 | 
				
			||||||
 | 
					        // The path is a directory
 | 
				
			||||||
 | 
					        return CreateDirs(new_path);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        // The path is a file
 | 
				
			||||||
 | 
					        // Creates directory preceding the last '/'
 | 
				
			||||||
 | 
					        return CreateDirs(new_path.substr(0, new_path.rfind('/')));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool Rename(const fs::path& src, const fs::path& dst) {
 | 
					bool Rename(const fs::path& src, const fs::path& dst) {
 | 
				
			||||||
    LOG_TRACE(Common_Filesystem, "{} --> {}", src.string(), dst.string());
 | 
					    LOG_TRACE(Common_Filesystem, "{} --> {}", src.string(), dst.string());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -54,8 +54,14 @@ enum class UserPath {
 | 
				
			|||||||
// Returns true if successful, or path already exists.
 | 
					// Returns true if successful, or path already exists.
 | 
				
			||||||
bool CreateDir(const std::filesystem::path& path);
 | 
					bool CreateDir(const std::filesystem::path& path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Creates the full path of path. Returns true on success
 | 
					// Create all directories in path
 | 
				
			||||||
bool CreateFullPath(const std::filesystem::path& path);
 | 
					// Returns true if successful, or path already exists.
 | 
				
			||||||
 | 
					[[nodiscard("Directory creation can fail and must be tested")]] bool CreateDirs(
 | 
				
			||||||
 | 
					    const std::filesystem::path& path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Creates directories in path. Returns true on success.
 | 
				
			||||||
 | 
					[[deprecated("This function is deprecated, use CreateDirs")]] bool CreateFullPath(
 | 
				
			||||||
 | 
					    const std::filesystem::path& path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Deletes a given file at the path.
 | 
					// Deletes a given file at the path.
 | 
				
			||||||
// This will also delete empty directories.
 | 
					// This will also delete empty directories.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user