diff options
author | Lioncash <mathew1800@gmail.com> | 2020-12-09 00:51:04 +0100 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2020-12-09 07:24:05 +0100 |
commit | 20aad9e01af958b6c8bf7d18faebd498541651f5 (patch) | |
tree | 15df52406d2d0cc0f2ca81e581e921d66290e073 /src/common/file_util.h | |
parent | file_util: Migrate Exists() and IsDirectory() over to std::filesystem (diff) | |
download | yuzu-20aad9e01af958b6c8bf7d18faebd498541651f5.tar yuzu-20aad9e01af958b6c8bf7d18faebd498541651f5.tar.gz yuzu-20aad9e01af958b6c8bf7d18faebd498541651f5.tar.bz2 yuzu-20aad9e01af958b6c8bf7d18faebd498541651f5.tar.lz yuzu-20aad9e01af958b6c8bf7d18faebd498541651f5.tar.xz yuzu-20aad9e01af958b6c8bf7d18faebd498541651f5.tar.zst yuzu-20aad9e01af958b6c8bf7d18faebd498541651f5.zip |
Diffstat (limited to '')
-rw-r--r-- | src/common/file_util.h | 62 |
1 files changed, 19 insertions, 43 deletions
diff --git a/src/common/file_util.h b/src/common/file_util.h index be0906434..c2ee7ca27 100644 --- a/src/common/file_util.h +++ b/src/common/file_util.h @@ -39,48 +39,34 @@ enum class UserPath { UserDir, }; -// FileSystem tree node/ -struct FSTEntry { - bool isDirectory; - u64 size; // file length or number of entries from children - std::string physicalName; // name on disk - std::string virtualName; // name in FST names table - std::vector<FSTEntry> children; -}; - -// Returns true if the exists +// Returns true if the path exists [[nodiscard]] bool Exists(const std::filesystem::path& path); // Returns true if path is a directory [[nodiscard]] bool IsDirectory(const std::filesystem::path& path); // Returns the size of filename (64bit) -[[nodiscard]] u64 GetSize(const std::string& filename); - -// Overloaded GetSize, accepts file descriptor -[[nodiscard]] u64 GetSize(int fd); +[[nodiscard]] u64 GetSize(const std::filesystem::path& path); // Overloaded GetSize, accepts FILE* [[nodiscard]] u64 GetSize(FILE* f); // Returns true if successful, or path already exists. -bool CreateDir(const std::string& filename); - -// Creates the full path of fullPath returns true on success -bool CreateFullPath(const std::string& fullPath); +bool CreateDir(const std::filesystem::path& path); -// Deletes a given filename, return true on success -// Doesn't supports deleting a directory -bool Delete(const std::string& filename); +// Creates the full path of path. Returns true on success +bool CreateFullPath(const std::filesystem::path& path); -// Deletes a directory filename, returns true on success -bool DeleteDir(const std::string& filename); +// Deletes a given file at the path. +// This will also delete empty directories. +// Return true on success +bool Delete(const std::filesystem::path& path); -// renames file srcFilename to destFilename, returns true on success -bool Rename(const std::string& srcFilename, const std::string& destFilename); +// Renames file src to dst, returns true on success +bool Rename(const std::filesystem::path& src, const std::filesystem::path& dst); -// copies file srcFilename to destFilename, returns true on success -bool Copy(const std::string& srcFilename, const std::string& destFilename); +// copies file src to dst, returns true on success +bool Copy(const std::filesystem::path& src, const std::filesystem::path& dst); // creates an empty file filename, returns true on success bool CreateEmptyFile(const std::string& filename); @@ -107,27 +93,17 @@ using DirectoryEntryCallable = std::function<bool( bool ForeachDirectoryEntry(u64* num_entries_out, const std::string& directory, DirectoryEntryCallable callback); -/** - * Scans the directory tree, storing the results. - * @param directory the parent directory to start scanning from - * @param parent_entry FSTEntry where the filesystem tree results will be stored. - * @param recursion Number of children directories to read before giving up. - * @return the total number of files/directories found - */ -u64 ScanDirectoryTree(const std::string& directory, FSTEntry& parent_entry, - unsigned int recursion = 0); - -// deletes the given directory and anything under it. Returns true on success. -bool DeleteDirRecursively(const std::string& directory, unsigned int recursion = 256); +// Deletes the given path and anything under it. Returns true on success. +bool DeleteDirRecursively(const std::filesystem::path& path); // Returns the current directory -[[nodiscard]] std::optional<std::string> GetCurrentDir(); +[[nodiscard]] std::optional<std::filesystem::path> GetCurrentDir(); // Create directory and copy contents (does not overwrite existing files) -void CopyDir(const std::string& source_path, const std::string& dest_path); +void CopyDir(const std::filesystem::path& src, const std::filesystem::path& dst); -// Set the current directory to given directory -bool SetCurrentDir(const std::string& directory); +// Set the current directory to given path +bool SetCurrentDir(const std::filesystem::path& path); // Returns a pointer to a string with a yuzu data dir in the user's home // directory. To be used in "multi-user" mode (that is, installed). |