diff options
Diffstat (limited to 'src/common/fs')
-rw-r--r-- | src/common/fs/fs.cpp | 27 | ||||
-rw-r--r-- | src/common/fs/fs_android.h | 5 | ||||
-rw-r--r-- | src/common/fs/fs_paths.h | 1 | ||||
-rw-r--r-- | src/common/fs/path_util.cpp | 1 | ||||
-rw-r--r-- | src/common/fs/path_util.h | 1 |
5 files changed, 34 insertions, 1 deletions
diff --git a/src/common/fs/fs.cpp b/src/common/fs/fs.cpp index e1716c62de..6d66c926dc 100644 --- a/src/common/fs/fs.cpp +++ b/src/common/fs/fs.cpp @@ -3,6 +3,9 @@ #include "common/fs/file.h" #include "common/fs/fs.h" +#ifdef ANDROID +#include "common/fs/fs_android.h" +#endif #include "common/fs/path_util.h" #include "common/logging/log.h" @@ -525,15 +528,39 @@ void IterateDirEntriesRecursively(const std::filesystem::path& path, // Generic Filesystem Operations bool Exists(const fs::path& path) { +#ifdef ANDROID + if (Android::IsContentUri(path)) { + return Android::Exists(path); + } else { + return fs::exists(path); + } +#else return fs::exists(path); +#endif } bool IsFile(const fs::path& path) { +#ifdef ANDROID + if (Android::IsContentUri(path)) { + return !Android::IsDirectory(path); + } else { + return fs::is_regular_file(path); + } +#else return fs::is_regular_file(path); +#endif } bool IsDir(const fs::path& path) { +#ifdef ANDROID + if (Android::IsContentUri(path)) { + return Android::IsDirectory(path); + } else { + return fs::is_directory(path); + } +#else return fs::is_directory(path); +#endif } fs::path GetCurrentDir() { diff --git a/src/common/fs/fs_android.h b/src/common/fs/fs_android.h index bb8a526487..b441c2a128 100644 --- a/src/common/fs/fs_android.h +++ b/src/common/fs/fs_android.h @@ -12,7 +12,10 @@ "openContentUri", "(Ljava/lang/String;Ljava/lang/String;)I") #define ANDROID_SINGLE_PATH_DETERMINE_FUNCTIONS(V) \ - V(GetSize, std::uint64_t, get_size, CallStaticLongMethod, "getSize", "(Ljava/lang/String;)J") + V(GetSize, std::uint64_t, get_size, CallStaticLongMethod, "getSize", "(Ljava/lang/String;)J") \ + V(IsDirectory, bool, is_directory, CallStaticBooleanMethod, "isDirectory", \ + "(Ljava/lang/String;)Z") \ + V(Exists, bool, file_exists, CallStaticBooleanMethod, "exists", "(Ljava/lang/String;)Z") namespace Common::FS::Android { diff --git a/src/common/fs/fs_paths.h b/src/common/fs/fs_paths.h index c77c112f17..61bac9eba0 100644 --- a/src/common/fs/fs_paths.h +++ b/src/common/fs/fs_paths.h @@ -10,6 +10,7 @@ // Sub-directories contained within a yuzu data directory +#define AMIIBO_DIR "amiibo" #define CACHE_DIR "cache" #define CONFIG_DIR "config" #define DUMP_DIR "dump" diff --git a/src/common/fs/path_util.cpp b/src/common/fs/path_util.cpp index e026a13d9a..d71cfacc6a 100644 --- a/src/common/fs/path_util.cpp +++ b/src/common/fs/path_util.cpp @@ -114,6 +114,7 @@ public: #endif GenerateYuzuPath(YuzuPath::YuzuDir, yuzu_path); + GenerateYuzuPath(YuzuPath::AmiiboDir, yuzu_path / AMIIBO_DIR); GenerateYuzuPath(YuzuPath::CacheDir, yuzu_path_cache); GenerateYuzuPath(YuzuPath::ConfigDir, yuzu_path_config); GenerateYuzuPath(YuzuPath::DumpDir, yuzu_path / DUMP_DIR); diff --git a/src/common/fs/path_util.h b/src/common/fs/path_util.h index 7cfe85b706..ba28964d0b 100644 --- a/src/common/fs/path_util.h +++ b/src/common/fs/path_util.h @@ -12,6 +12,7 @@ namespace Common::FS { enum class YuzuPath { YuzuDir, // Where yuzu stores its data. + AmiiboDir, // Where Amiibo backups are stored. CacheDir, // Where cached filesystem data is stored. ConfigDir, // Where config files are stored. DumpDir, // Where dumped data is stored. |