From 0716cf84c06b0bf937961e19bed4a2a0bb45e824 Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Sat, 27 Jun 2015 13:31:21 -0700 Subject: [PATCH] Renaming xe::fs to xe::filesystem and xe::kernel::fs to xe::vfs. Progress on #294. --- libxenia.vcxproj | 62 +++--- libxenia.vcxproj.filters | 198 +++++++++--------- src/xenia/base/{fs.cc => filesystem.cc} | 8 +- src/xenia/base/{fs.h => filesystem.h} | 15 +- .../base/{fs_win.cc => filesystem_win.cc} | 6 +- src/xenia/debug/debugger.cc | 4 +- src/xenia/emulator.cc | 6 +- src/xenia/emulator.h | 5 +- src/xenia/gpu/gl4/gl4_shader.cc | 4 +- src/xenia/gpu/tracing.cc | 4 +- src/xenia/kernel/content_manager.cc | 26 +-- src/xenia/kernel/kernel_state.h | 6 +- src/xenia/kernel/objects/xfile.cc | 2 +- src/xenia/kernel/objects/xfile.h | 8 +- src/xenia/kernel/objects/xuser_module.cc | 4 +- src/xenia/kernel/xboxkrnl_io.cc | 16 +- src/xenia/ui/main_window.cc | 6 +- src/xenia/{kernel/fs => vfs}/device.cc | 8 +- src/xenia/{kernel/fs => vfs}/device.h | 14 +- .../fs => vfs}/devices/disc_image_device.cc | 12 +- .../fs => vfs}/devices/disc_image_device.h | 14 +- .../fs => vfs}/devices/disc_image_entry.cc | 10 +- .../fs => vfs}/devices/disc_image_entry.h | 20 +- .../fs => vfs}/devices/disc_image_file.cc | 14 +- .../fs => vfs}/devices/disc_image_file.h | 12 +- .../fs => vfs}/devices/host_path_device.cc | 14 +- .../fs => vfs}/devices/host_path_device.h | 14 +- .../fs => vfs}/devices/host_path_entry.cc | 10 +- .../fs => vfs}/devices/host_path_entry.h | 14 +- .../fs => vfs}/devices/host_path_file.cc | 12 +- .../fs => vfs}/devices/host_path_file.h | 12 +- .../devices/stfs_container_device.cc | 12 +- .../devices/stfs_container_device.h | 14 +- .../devices/stfs_container_entry.cc | 10 +- .../fs => vfs}/devices/stfs_container_entry.h | 20 +- .../fs => vfs}/devices/stfs_container_file.cc | 14 +- .../fs => vfs}/devices/stfs_container_file.h | 12 +- src/xenia/{kernel/fs => vfs}/entry.cc | 10 +- src/xenia/{kernel/fs => vfs}/entry.h | 14 +- src/xenia/{kernel/fs => vfs}/gdfx.cc | 10 +- src/xenia/{kernel/fs => vfs}/gdfx.h | 19 +- src/xenia/{kernel/fs => vfs}/stfs.cc | 10 +- src/xenia/{kernel/fs => vfs}/stfs.h | 19 +- .../virtual_file_system.cc} | 58 +++-- .../virtual_file_system.h} | 20 +- 45 files changed, 374 insertions(+), 428 deletions(-) rename src/xenia/base/{fs.cc => filesystem.cc} (98%) rename src/xenia/base/{fs.h => filesystem.h} (91%) rename src/xenia/base/{fs_win.cc => filesystem_win.cc} (96%) rename src/xenia/{kernel/fs => vfs}/device.cc (95%) rename src/xenia/{kernel/fs => vfs}/device.h (85%) rename src/xenia/{kernel/fs => vfs}/devices/disc_image_device.cc (89%) rename src/xenia/{kernel/fs => vfs}/devices/disc_image_device.h (77%) rename src/xenia/{kernel/fs => vfs}/devices/disc_image_entry.cc (95%) rename src/xenia/{kernel/fs => vfs}/devices/disc_image_entry.h (80%) rename src/xenia/{kernel/fs => vfs}/devices/disc_image_file.cc (88%) rename src/xenia/{kernel/fs => vfs}/devices/disc_image_file.h (84%) rename src/xenia/{kernel/fs => vfs}/devices/host_path_device.cc (85%) rename src/xenia/{kernel/fs => vfs}/devices/host_path_device.h (77%) rename src/xenia/{kernel/fs => vfs}/devices/host_path_entry.cc (97%) rename src/xenia/{kernel/fs => vfs}/devices/host_path_entry.h (83%) rename src/xenia/{kernel/fs => vfs}/devices/host_path_file.cc (92%) rename src/xenia/{kernel/fs => vfs}/devices/host_path_file.h (86%) rename src/xenia/{kernel/fs => vfs}/devices/stfs_container_device.cc (89%) rename src/xenia/{kernel/fs => vfs}/devices/stfs_container_device.h (77%) rename src/xenia/{kernel/fs => vfs}/devices/stfs_container_entry.cc (94%) rename src/xenia/{kernel/fs => vfs}/devices/stfs_container_entry.h (78%) rename src/xenia/{kernel/fs => vfs}/devices/stfs_container_file.cc (91%) rename src/xenia/{kernel/fs => vfs}/devices/stfs_container_file.h (84%) rename src/xenia/{kernel/fs => vfs}/entry.cc (87%) rename src/xenia/{kernel/fs => vfs}/entry.h (92%) rename src/xenia/{kernel/fs => vfs}/gdfx.cc (96%) rename src/xenia/{kernel/fs => vfs}/gdfx.h (85%) rename src/xenia/{kernel/fs => vfs}/stfs.cc (98%) rename src/xenia/{kernel/fs => vfs}/stfs.h (94%) rename src/xenia/{kernel/fs/filesystem.cc => vfs/virtual_file_system.cc} (74%) rename src/xenia/{kernel/fs/filesystem.h => vfs/virtual_file_system.h} (85%) diff --git a/libxenia.vcxproj b/libxenia.vcxproj index c9a638789..38887e395 100644 --- a/libxenia.vcxproj +++ b/libxenia.vcxproj @@ -28,8 +28,8 @@ - - + + @@ -135,20 +135,6 @@ - - - - - - - - - - - - - - @@ -207,6 +193,20 @@ + + + + + + + + + + + + + + CompileAsCpp @@ -284,7 +284,7 @@ - + @@ -406,20 +406,6 @@ - - - - - - - - - - - - - - @@ -462,6 +448,20 @@ + + + + + + + + + + + + + + diff --git a/libxenia.vcxproj.filters b/libxenia.vcxproj.filters index aa315161f..f9b82b911 100644 --- a/libxenia.vcxproj.filters +++ b/libxenia.vcxproj.filters @@ -80,18 +80,12 @@ {4e0349c4-b0bd-4595-9e83-cb3cbe11a172} - - {65927db3-9314-4d02-a392-702b09fca341} - {bb86c40a-ad91-482e-a7c8-ef0a84280c8d} {447ef539-2dab-4969-a5b0-57c8d6f4c6ec} - - {cceab7bd-2f0a-4a27-a297-2f89170b8f6b} - {9194a1f4-9934-465e-adcb-3ac0e337dfe3} @@ -161,6 +155,12 @@ {00596876-a323-4570-a5fb-71343024d429} + + {831bb630-c71e-43c7-abf0-bde923d10e9b} + + + {82795389-e855-4cd6-a3b6-9580030cebf2} + @@ -193,12 +193,6 @@ src\xenia\base - - src\xenia\base - - - src\xenia\base - src\xenia\base @@ -529,48 +523,6 @@ src\xenia\kernel\apps - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - src\xenia\kernel @@ -781,6 +733,54 @@ src\xenia\apu\nop + + src\xenia\base + + + src\xenia\base + + + src\xenia\vfs + + + src\xenia\vfs + + + src\xenia\vfs + + + src\xenia\vfs + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs + @@ -828,9 +828,6 @@ src\xenia\base - - src\xenia\base - src\xenia\base @@ -1206,48 +1203,6 @@ src\xenia\kernel\apps - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - src\xenia\kernel @@ -1488,6 +1443,51 @@ src\xenia\hid + + src\xenia\base + + + src\xenia\vfs + + + src\xenia\vfs + + + src\xenia\vfs + + + src\xenia\vfs + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs\devices + + + src\xenia\vfs + diff --git a/src/xenia/base/fs.cc b/src/xenia/base/filesystem.cc similarity index 98% rename from src/xenia/base/fs.cc rename to src/xenia/base/filesystem.cc index e789eb8d0..16dc1eb9e 100644 --- a/src/xenia/base/fs.cc +++ b/src/xenia/base/filesystem.cc @@ -7,14 +7,12 @@ ****************************************************************************** */ -#include "xenia/base/fs.h" +#include "xenia/base/filesystem.h" -#include -#include #include namespace xe { -namespace fs { +namespace filesystem { std::string CanonicalizePath(const std::string& original_path) { char path_sep('\\'); @@ -178,5 +176,5 @@ bool WildcardEngine::Match(const std::string& str) const { return true; } -} // namespace fs +} // namespace filesystem } // namespace xe diff --git a/src/xenia/base/fs.h b/src/xenia/base/filesystem.h similarity index 91% rename from src/xenia/base/fs.h rename to src/xenia/base/filesystem.h index 281c21ec9..11b83cf9a 100644 --- a/src/xenia/base/fs.h +++ b/src/xenia/base/filesystem.h @@ -7,18 +7,17 @@ ****************************************************************************** */ -#ifndef XENIA_BASE_FS_H_ -#define XENIA_BASE_FS_H_ +#ifndef XENIA_BASE_FILESYSTEM_H_ +#define XENIA_BASE_FILESYSTEM_H_ +#include #include +#include #include "xenia/base/string.h" -#include -#include - namespace xe { -namespace fs { +namespace filesystem { bool PathExists(const std::wstring& path); @@ -73,7 +72,7 @@ class WildcardEngine { void PreparePattern(const std::string& pattern); }; -} // namespace fs +} // namespace filesystem } // namespace xe -#endif // XENIA_BASE_FS_H_ +#endif // XENIA_BASE_FILESYSTEM_H_ diff --git a/src/xenia/base/fs_win.cc b/src/xenia/base/filesystem_win.cc similarity index 96% rename from src/xenia/base/fs_win.cc rename to src/xenia/base/filesystem_win.cc index 893775dea..2ad7346ec 100644 --- a/src/xenia/base/fs_win.cc +++ b/src/xenia/base/filesystem_win.cc @@ -7,7 +7,7 @@ ****************************************************************************** */ -#include "xenia/base/fs.h" +#include "xenia/base/filesystem.h" #include @@ -16,7 +16,7 @@ #include "xenia/base/platform.h" namespace xe { -namespace fs { +namespace filesystem { bool PathExists(const std::wstring& path) { DWORD attrib = GetFileAttributes(path.c_str()); @@ -73,5 +73,5 @@ std::vector ListFiles(const std::wstring& path) { return result; } -} // namespace fs +} // namespace filesystem } // namespace xe diff --git a/src/xenia/debug/debugger.cc b/src/xenia/debug/debugger.cc index 5a6fccc0e..e8b887e47 100644 --- a/src/xenia/debug/debugger.cc +++ b/src/xenia/debug/debugger.cc @@ -16,7 +16,7 @@ #include -#include "xenia/base/fs.h" +#include "xenia/base/filesystem.h" #include "xenia/base/logging.h" #include "xenia/base/string.h" #include "xenia/base/threading.h" @@ -73,7 +73,7 @@ bool Debugger::StartSession() { auto session_path = xe::to_wstring(FLAGS_debug_session_path); if (!session_path.empty()) { session_path = xe::to_absolute_path(session_path); - xe::fs::CreateFolder(session_path); + xe::filesystem::CreateFolder(session_path); } functions_path_ = xe::join_paths(session_path, L"functions"); diff --git a/src/xenia/emulator.cc b/src/xenia/emulator.cc index 67beb7d0b..de404e025 100644 --- a/src/xenia/emulator.cc +++ b/src/xenia/emulator.cc @@ -21,9 +21,9 @@ #include "xenia/kernel/kernel.h" #include "xenia/kernel/kernel_state.h" #include "xenia/kernel/modules.h" -#include "xenia/kernel/fs/filesystem.h" #include "xenia/memory.h" #include "xenia/ui/main_window.h" +#include "xenia/vfs/virtual_file_system.h" DEFINE_double(time_scalar, 1.0, "Scalar used to speed or slow time (1x, 2x, 1/2x, etc)."); @@ -34,8 +34,8 @@ using namespace xe::apu; using namespace xe::cpu; using namespace xe::gpu; using namespace xe::hid; -using namespace xe::kernel::fs; using namespace xe::ui; +using namespace xe::vfs; Emulator::Emulator(const std::wstring& command_line) : command_line_(command_line) {} @@ -139,7 +139,7 @@ X_STATUS Emulator::Setup() { } // Bring up the virtual filesystem used by the kernel. - file_system_ = std::make_unique(); + file_system_ = std::make_unique(); // Shared kernel state. kernel_state_ = std::make_unique(this); diff --git a/src/xenia/emulator.h b/src/xenia/emulator.h index 58e647e25..3d43c40d0 100644 --- a/src/xenia/emulator.h +++ b/src/xenia/emulator.h @@ -16,6 +16,7 @@ #include "xenia/kernel/kernel_state.h" #include "xenia/memory.h" #include "xenia/ui/main_window.h" +#include "xenia/vfs/virtual_file_system.h" #include "xenia/xbox.h" namespace xe { @@ -65,7 +66,7 @@ class Emulator { cpu::ExportResolver* export_resolver() const { return export_resolver_.get(); } - kernel::fs::FileSystem* file_system() const { return file_system_.get(); } + vfs::VirtualFileSystem* file_system() const { return file_system_.get(); } kernel::KernelState* kernel_state() const { return kernel_state_.get(); } @@ -95,7 +96,7 @@ class Emulator { std::unique_ptr input_system_; std::unique_ptr export_resolver_; - std::unique_ptr file_system_; + std::unique_ptr file_system_; std::unique_ptr kernel_state_; }; diff --git a/src/xenia/gpu/gl4/gl4_shader.cc b/src/xenia/gpu/gl4/gl4_shader.cc index 5cadc2f7e..6650f9501 100644 --- a/src/xenia/gpu/gl4/gl4_shader.cc +++ b/src/xenia/gpu/gl4/gl4_shader.cc @@ -9,7 +9,7 @@ #include "xenia/gpu/gl4/gl4_shader.h" -#include "xenia/base/fs.h" +#include "xenia/base/filesystem.h" #include "xenia/base/logging.h" #include "xenia/base/math.h" #include "xenia/gpu/gl4/gl4_gpu_flags.h" @@ -363,7 +363,7 @@ bool GL4Shader::CompileProgram(std::string source) { auto dump_shaders_path = xe::to_wstring(FLAGS_dump_shaders); if (!dump_shaders_path.empty()) { dump_shaders_path = xe::to_absolute_path(dump_shaders_path); - xe::fs::CreateFolder(dump_shaders_path); + xe::filesystem::CreateFolder(dump_shaders_path); } // Note that we put the translated source first so we get good line numbers. diff --git a/src/xenia/gpu/tracing.cc b/src/xenia/gpu/tracing.cc index ea3af529a..460799015 100644 --- a/src/xenia/gpu/tracing.cc +++ b/src/xenia/gpu/tracing.cc @@ -9,7 +9,7 @@ #include "xenia/gpu/tracing.h" -#include "xenia/base/fs.h" +#include "xenia/base/filesystem.h" #include "xenia/base/string.h" namespace xe { @@ -25,7 +25,7 @@ bool TraceWriter::Open(const std::wstring& path) { auto canonical_path = xe::to_absolute_path(path); auto base_path = xe::find_base_path(canonical_path); - xe::fs::CreateFolder(base_path); + xe::filesystem::CreateFolder(base_path); file_ = _wfopen(canonical_path.c_str(), L"wb"); return file_ != nullptr; diff --git a/src/xenia/kernel/content_manager.cc b/src/xenia/kernel/content_manager.cc index d5fef014f..f48bca2f4 100644 --- a/src/xenia/kernel/content_manager.cc +++ b/src/xenia/kernel/content_manager.cc @@ -11,7 +11,7 @@ #include -#include "xenia/base/fs.h" +#include "xenia/base/filesystem.h" #include "xenia/kernel/kernel_state.h" #include "xenia/kernel/xobject.h" @@ -96,9 +96,9 @@ std::vector ContentManager::ListContent(uint32_t device_id, // Search path: // content_root/title_id/type_name/* auto package_root = ResolvePackageRoot(content_type); - auto file_infos = xe::fs::ListFiles(package_root); + auto file_infos = xe::filesystem::ListFiles(package_root); for (const auto& file_info : file_infos) { - if (file_info.type != xe::fs::FileInfo::Type::kDirectory) { + if (file_info.type != xe::filesystem::FileInfo::Type::kDirectory) { // Directories only. continue; } @@ -116,7 +116,7 @@ std::vector ContentManager::ListContent(uint32_t device_id, std::unique_ptr ContentManager::ResolvePackage( std::string root_name, const XCONTENT_DATA& data) { auto package_path = ResolvePackagePath(data); - if (!xe::fs::PathExists(package_path)) { + if (!xe::filesystem::PathExists(package_path)) { return nullptr; } @@ -129,7 +129,7 @@ std::unique_ptr ContentManager::ResolvePackage( bool ContentManager::ContentExists(const XCONTENT_DATA& data) { auto path = ResolvePackagePath(data); - return xe::fs::PathExists(path); + return xe::filesystem::PathExists(path); } X_RESULT ContentManager::CreateContent(std::string root_name, @@ -142,12 +142,12 @@ X_RESULT ContentManager::CreateContent(std::string root_name, } auto package_path = ResolvePackagePath(data); - if (xe::fs::PathExists(package_path)) { + if (xe::filesystem::PathExists(package_path)) { // Exists, must not! return X_ERROR_ALREADY_EXISTS; } - if (!xe::fs::CreateFolder(package_path)) { + if (!xe::filesystem::CreateFolder(package_path)) { return X_ERROR_ACCESS_DENIED; } @@ -169,7 +169,7 @@ X_RESULT ContentManager::OpenContent(std::string root_name, } auto package_path = ResolvePackagePath(data); - if (!xe::fs::PathExists(package_path)) { + if (!xe::filesystem::PathExists(package_path)) { // Does not exist, must be created. return X_ERROR_FILE_NOT_FOUND; } @@ -203,7 +203,7 @@ X_RESULT ContentManager::GetContentThumbnail(const XCONTENT_DATA& data, std::lock_guard lock(content_mutex_); auto package_path = ResolvePackagePath(data); auto thumb_path = xe::join_paths(package_path, kThumbnailFileName); - if (xe::fs::PathExists(thumb_path)) { + if (xe::filesystem::PathExists(thumb_path)) { auto file = _wfopen(thumb_path.c_str(), L"rb"); fseek(file, 0, SEEK_END); size_t file_len = ftell(file); @@ -221,8 +221,8 @@ X_RESULT ContentManager::SetContentThumbnail(const XCONTENT_DATA& data, std::vector buffer) { std::lock_guard lock(content_mutex_); auto package_path = ResolvePackagePath(data); - xe::fs::CreateFolder(package_path); - if (xe::fs::PathExists(package_path)) { + xe::filesystem::CreateFolder(package_path); + if (xe::filesystem::PathExists(package_path)) { auto thumb_path = xe::join_paths(package_path, kThumbnailFileName); auto file = _wfopen(thumb_path.c_str(), L"wb"); fwrite(buffer.data(), 1, buffer.size(), file); @@ -237,8 +237,8 @@ X_RESULT ContentManager::DeleteContent(const XCONTENT_DATA& data) { std::lock_guard lock(content_mutex_); auto package_path = ResolvePackagePath(data); - if (xe::fs::PathExists(package_path)) { - xe::fs::DeleteFolder(package_path); + if (xe::filesystem::PathExists(package_path)) { + xe::filesystem::DeleteFolder(package_path); return X_ERROR_SUCCESS; } else { return X_ERROR_FILE_NOT_FOUND; diff --git a/src/xenia/kernel/kernel_state.h b/src/xenia/kernel/kernel_state.h index a022eda78..c2ac47c3b 100644 --- a/src/xenia/kernel/kernel_state.h +++ b/src/xenia/kernel/kernel_state.h @@ -19,10 +19,10 @@ #include "xenia/cpu/export_resolver.h" #include "xenia/kernel/app.h" #include "xenia/kernel/content_manager.h" -#include "xenia/kernel/fs/filesystem.h" #include "xenia/kernel/object_table.h" #include "xenia/kernel/user_profile.h" #include "xenia/memory.h" +#include "xenia/vfs/virtual_file_system.h" #include "xenia/xbox.h" namespace xe { @@ -84,7 +84,7 @@ class KernelState { Emulator* emulator() const { return emulator_; } Memory* memory() const { return memory_; } cpu::Processor* processor() const { return processor_; } - fs::FileSystem* file_system() const { return file_system_; } + vfs::VirtualFileSystem* file_system() const { return file_system_; } uint32_t title_id() const; @@ -140,7 +140,7 @@ class KernelState { Emulator* emulator_; Memory* memory_; cpu::Processor* processor_; - fs::FileSystem* file_system_; + vfs::VirtualFileSystem* file_system_; Dispatcher* dispatcher_; diff --git a/src/xenia/kernel/objects/xfile.cc b/src/xenia/kernel/objects/xfile.cc index 8a0a94a72..99c496c28 100644 --- a/src/xenia/kernel/objects/xfile.cc +++ b/src/xenia/kernel/objects/xfile.cc @@ -15,7 +15,7 @@ namespace xe { namespace kernel { -XFile::XFile(KernelState* kernel_state, fs::Mode mode) +XFile::XFile(KernelState* kernel_state, vfs::Mode mode) : mode_(mode), position_(0), XObject(kernel_state, kTypeFile) { async_event_ = new XEvent(kernel_state); async_event_->Initialize(false, false); diff --git a/src/xenia/kernel/objects/xfile.h b/src/xenia/kernel/objects/xfile.h index 9f585ea6d..e4cd2b153 100644 --- a/src/xenia/kernel/objects/xfile.h +++ b/src/xenia/kernel/objects/xfile.h @@ -10,8 +10,8 @@ #ifndef XENIA_KERNEL_XBOXKRNL_XFILE_H_ #define XENIA_KERNEL_XBOXKRNL_XFILE_H_ -#include "xenia/kernel/fs/entry.h" #include "xenia/kernel/xobject.h" +#include "xenia/vfs/entry.h" #include "xenia/xbox.h" @@ -139,7 +139,7 @@ class XFile : public XObject { virtual const std::string& path() const = 0; virtual const std::string& name() const = 0; - virtual fs::Device* device() const = 0; + virtual vfs::Device* device() const = 0; size_t position() const { return position_; } void set_position(size_t value) { position_ = value; } @@ -160,7 +160,7 @@ class XFile : public XObject { virtual void* GetWaitHandle(); protected: - XFile(KernelState* kernel_state, fs::Mode mode); + XFile(KernelState* kernel_state, vfs::Mode mode); virtual X_STATUS ReadSync(void* buffer, size_t buffer_length, size_t byte_offset, size_t* out_bytes_read) = 0; virtual X_STATUS WriteSync(const void* buffer, size_t buffer_length, @@ -169,7 +169,7 @@ class XFile : public XObject { } private: - fs::Mode mode_; + vfs::Mode mode_; XEvent* async_event_; // TODO(benvanik): create flags, open state, etc. diff --git a/src/xenia/kernel/objects/xuser_module.cc b/src/xenia/kernel/objects/xuser_module.cc index cbf65d549..a8b533e2b 100644 --- a/src/xenia/kernel/objects/xuser_module.cc +++ b/src/xenia/kernel/objects/xuser_module.cc @@ -51,7 +51,7 @@ X_STATUS XUserModule::LoadFromFile(std::string path) { // If the FS supports mapping, map the file in and load from that. if (fs_entry->can_map()) { // Map. - auto mmap = fs_entry->CreateMemoryMapping(fs::Mode::READ, 0, 0); + auto mmap = fs_entry->CreateMemoryMapping(vfs::Mode::READ, 0, 0); if (!mmap) { return result; } @@ -70,7 +70,7 @@ X_STATUS XUserModule::LoadFromFile(std::string path) { // Open file for reading. XFile* file_ptr = nullptr; result = kernel_state()->file_system()->Open( - std::move(fs_entry), kernel_state(), fs::Mode::READ, false, &file_ptr); + std::move(fs_entry), kernel_state(), vfs::Mode::READ, false, &file_ptr); object_ref file(file_ptr); if (result) { return result; diff --git a/src/xenia/kernel/xboxkrnl_io.cc b/src/xenia/kernel/xboxkrnl_io.cc index a81cbfc16..dc19732b0 100644 --- a/src/xenia/kernel/xboxkrnl_io.cc +++ b/src/xenia/kernel/xboxkrnl_io.cc @@ -12,18 +12,18 @@ #include "xenia/cpu/processor.h" #include "xenia/kernel/async_request.h" #include "xenia/kernel/kernel_state.h" -#include "xenia/kernel/fs/device.h" #include "xenia/kernel/objects/xevent.h" #include "xenia/kernel/objects/xfile.h" #include "xenia/kernel/objects/xthread.h" #include "xenia/kernel/util/shim_utils.h" #include "xenia/kernel/xboxkrnl_private.h" +#include "xenia/vfs/device.h" #include "xenia/xbox.h" namespace xe { namespace kernel { -using namespace xe::kernel::fs; +using namespace xe::vfs; // TODO(benvanik): replace X_OBJECT_ATTRIBUTES with new style and remove this. class X_ANSI_STRING_OLD { @@ -127,7 +127,7 @@ X_STATUS NtCreateFile(PPCContext* ppc_context, KernelState* kernel_state, uint32_t info = X_FILE_DOES_NOT_EXIST; uint32_t handle; - FileSystem* fs = kernel_state->file_system(); + auto fs = kernel_state->file_system(); std::unique_ptr entry; object_ref root_file; @@ -165,13 +165,13 @@ X_STATUS NtCreateFile(PPCContext* ppc_context, KernelState* kernel_state, info = X_FILE_DOES_NOT_EXIST; } else { // Open the file/directory. - fs::Mode mode; + vfs::Mode mode; if (desired_access & FileAccess::X_FILE_APPEND_DATA) { - mode = fs::Mode::READ_APPEND; + mode = vfs::Mode::READ_APPEND; } else if (wants_write) { - mode = fs::Mode::READ_WRITE; + mode = vfs::Mode::READ_WRITE; } else { - mode = fs::Mode::READ; + mode = vfs::Mode::READ; } XFile* file_ptr = nullptr; result = fs->Open(std::move(entry), kernel_state, mode, @@ -638,7 +638,7 @@ SHIM_CALL NtQueryFullAttributesFile_shim(PPCContext* ppc_context, } // Resolve the file using the virtual file system. - FileSystem* fs = kernel_state->file_system(); + auto fs = kernel_state->file_system(); auto entry = fs->ResolvePath(object_name); if (entry) { // Found. diff --git a/src/xenia/ui/main_window.cc b/src/xenia/ui/main_window.cc index 177c762bd..2b60828ae 100644 --- a/src/xenia/ui/main_window.cc +++ b/src/xenia/ui/main_window.cc @@ -270,13 +270,13 @@ X_STATUS MainWindow::LaunchPath(std::wstring path) { // NOTE: this blocks! auto file_system_type = emulator_->file_system()->InferType(path); switch (file_system_type) { - case kernel::fs::FileSystemType::STFS_TITLE: + case vfs::FileSystemType::STFS_TITLE: result = emulator_->LaunchSTFSTitle(path); break; - case kernel::fs::FileSystemType::XEX_FILE: + case vfs::FileSystemType::XEX_FILE: result = emulator_->LaunchXexFile(path); break; - case kernel::fs::FileSystemType::DISC_IMAGE: + case vfs::FileSystemType::DISC_IMAGE: result = emulator_->LaunchDiscImage(path); break; } diff --git a/src/xenia/kernel/fs/device.cc b/src/xenia/vfs/device.cc similarity index 95% rename from src/xenia/kernel/fs/device.cc rename to src/xenia/vfs/device.cc index b8327c88c..ec5e734f1 100644 --- a/src/xenia/kernel/fs/device.cc +++ b/src/xenia/vfs/device.cc @@ -7,13 +7,12 @@ ****************************************************************************** */ -#include "xenia/kernel/fs/device.h" +#include "xenia/vfs/device.h" #include "xenia/kernel/objects/xfile.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { Device::Device(const std::string& path) : path_(path) {} @@ -69,6 +68,5 @@ X_STATUS Device::QueryAttributeInfo(X_FILE_FS_ATTRIBUTE_INFORMATION* out_info, return X_STATUS_SUCCESS; } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/device.h b/src/xenia/vfs/device.h similarity index 85% rename from src/xenia/kernel/fs/device.h rename to src/xenia/vfs/device.h index baa283e19..0a651268a 100644 --- a/src/xenia/kernel/fs/device.h +++ b/src/xenia/vfs/device.h @@ -7,17 +7,16 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_DEVICE_H_ -#define XENIA_KERNEL_FS_DEVICE_H_ +#ifndef XENIA_VFS_DEVICE_H_ +#define XENIA_VFS_DEVICE_H_ #include #include -#include "xenia/kernel/fs/entry.h" +#include "xenia/vfs/entry.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class Device { public: @@ -41,8 +40,7 @@ class Device { std::string path_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_DEVICE_H_ +#endif // XENIA_VFS_DEVICE_H_ diff --git a/src/xenia/kernel/fs/devices/disc_image_device.cc b/src/xenia/vfs/devices/disc_image_device.cc similarity index 89% rename from src/xenia/kernel/fs/devices/disc_image_device.cc rename to src/xenia/vfs/devices/disc_image_device.cc index d81d258b6..94bca5e2f 100644 --- a/src/xenia/kernel/fs/devices/disc_image_device.cc +++ b/src/xenia/vfs/devices/disc_image_device.cc @@ -7,16 +7,15 @@ ****************************************************************************** */ -#include "xenia/kernel/fs/devices/disc_image_device.h" +#include "xenia/vfs/devices/disc_image_device.h" #include "xenia/base/logging.h" #include "xenia/base/math.h" -#include "xenia/kernel/fs/gdfx.h" -#include "xenia/kernel/fs/devices/disc_image_entry.h" +#include "xenia/vfs/gdfx.h" +#include "xenia/vfs/devices/disc_image_entry.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { DiscImageDevice::DiscImageDevice(const std::string& path, const std::wstring& local_path) @@ -65,6 +64,5 @@ std::unique_ptr DiscImageDevice::ResolvePath(const char* path) { return std::make_unique(this, path, mmap_.get(), gdfx_entry); } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/devices/disc_image_device.h b/src/xenia/vfs/devices/disc_image_device.h similarity index 77% rename from src/xenia/kernel/fs/devices/disc_image_device.h rename to src/xenia/vfs/devices/disc_image_device.h index 8163dc448..b24d6f0d6 100644 --- a/src/xenia/kernel/fs/devices/disc_image_device.h +++ b/src/xenia/vfs/devices/disc_image_device.h @@ -7,18 +7,17 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_DEVICES_DISC_IMAGE_DEVICE_H_ -#define XENIA_KERNEL_FS_DEVICES_DISC_IMAGE_DEVICE_H_ +#ifndef XENIA_VFS_DEVICES_DISC_IMAGE_DEVICE_H_ +#define XENIA_VFS_DEVICES_DISC_IMAGE_DEVICE_H_ #include #include #include "xenia/base/mapped_memory.h" -#include "xenia/kernel/fs/device.h" +#include "xenia/vfs/device.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class GDFX; @@ -37,8 +36,7 @@ class DiscImageDevice : public Device { GDFX* gdfx_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_DEVICES_DISC_IMAGE_DEVICE_H_ +#endif // XENIA_VFS_DEVICES_DISC_IMAGE_DEVICE_H_ diff --git a/src/xenia/kernel/fs/devices/disc_image_entry.cc b/src/xenia/vfs/devices/disc_image_entry.cc similarity index 95% rename from src/xenia/kernel/fs/devices/disc_image_entry.cc rename to src/xenia/vfs/devices/disc_image_entry.cc index 309141b98..5838e5b3f 100644 --- a/src/xenia/kernel/fs/devices/disc_image_entry.cc +++ b/src/xenia/vfs/devices/disc_image_entry.cc @@ -7,16 +7,15 @@ ****************************************************************************** */ -#include "xenia/kernel/fs/devices/disc_image_entry.h" +#include "xenia/vfs/devices/disc_image_entry.h" #include #include "xenia/base/math.h" -#include "xenia/kernel/fs/devices/disc_image_file.h" +#include "xenia/vfs/devices/disc_image_file.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class DiscImageMemoryMapping : public MemoryMapping { public: @@ -118,6 +117,5 @@ X_STATUS DiscImageEntry::Open(KernelState* kernel_state, Mode mode, bool async, return X_STATUS_SUCCESS; } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/devices/disc_image_entry.h b/src/xenia/vfs/devices/disc_image_entry.h similarity index 80% rename from src/xenia/kernel/fs/devices/disc_image_entry.h rename to src/xenia/vfs/devices/disc_image_entry.h index 2867f408c..2b68e2446 100644 --- a/src/xenia/kernel/fs/devices/disc_image_entry.h +++ b/src/xenia/vfs/devices/disc_image_entry.h @@ -7,19 +7,18 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_DEVICES_DISC_IMAGE_ENTRY_H_ -#define XENIA_KERNEL_FS_DEVICES_DISC_IMAGE_ENTRY_H_ +#ifndef XENIA_VFS_DEVICES_DISC_IMAGE_ENTRY_H_ +#define XENIA_VFS_DEVICES_DISC_IMAGE_ENTRY_H_ #include -#include "xenia/base/fs.h" +#include "xenia/base/filesystem.h" #include "xenia/base/mapped_memory.h" -#include "xenia/kernel/fs/entry.h" -#include "xenia/kernel/fs/gdfx.h" +#include "xenia/vfs/entry.h" +#include "xenia/vfs/gdfx.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class DiscImageEntry : public Entry { public: @@ -45,12 +44,11 @@ class DiscImageEntry : public Entry { MappedMemory* mmap_; GDFXEntry* gdfx_entry_; - xe::fs::WildcardEngine find_engine_; + xe::filesystem::WildcardEngine find_engine_; GDFXEntry::child_it_t it_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_DEVICES_DISC_IMAGE_ENTRY_H_ +#endif // XENIA_VFS_DEVICES_DISC_IMAGE_ENTRY_H_ diff --git a/src/xenia/kernel/fs/devices/disc_image_file.cc b/src/xenia/vfs/devices/disc_image_file.cc similarity index 88% rename from src/xenia/kernel/fs/devices/disc_image_file.cc rename to src/xenia/vfs/devices/disc_image_file.cc index 885197dd4..0629ea475 100644 --- a/src/xenia/kernel/fs/devices/disc_image_file.cc +++ b/src/xenia/vfs/devices/disc_image_file.cc @@ -7,17 +7,16 @@ ****************************************************************************** */ -#include "xenia/kernel/fs/devices/disc_image_file.h" +#include "xenia/vfs/devices/disc_image_file.h" #include -#include "xenia/kernel/fs/device.h" -#include "xenia/kernel/fs/devices/disc_image_entry.h" -#include "xenia/kernel/fs/gdfx.h" +#include "xenia/vfs/device.h" +#include "xenia/vfs/devices/disc_image_entry.h" +#include "xenia/vfs/gdfx.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { DiscImageFile::DiscImageFile(KernelState* kernel_state, Mode mode, DiscImageEntry* entry) @@ -54,6 +53,5 @@ X_STATUS DiscImageFile::ReadSync(void* buffer, size_t buffer_length, return X_STATUS_SUCCESS; } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/devices/disc_image_file.h b/src/xenia/vfs/devices/disc_image_file.h similarity index 84% rename from src/xenia/kernel/fs/devices/disc_image_file.h rename to src/xenia/vfs/devices/disc_image_file.h index 2ff5bbc59..647c05de3 100644 --- a/src/xenia/kernel/fs/devices/disc_image_file.h +++ b/src/xenia/vfs/devices/disc_image_file.h @@ -7,14 +7,13 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_DEVICES_DISC_IMAGE_FILE_H_ -#define XENIA_KERNEL_FS_DEVICES_DISC_IMAGE_FILE_H_ +#ifndef XENIA_VFS_DEVICES_DISC_IMAGE_FILE_H_ +#define XENIA_VFS_DEVICES_DISC_IMAGE_FILE_H_ #include "xenia/kernel/objects/xfile.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class DiscImageEntry; @@ -41,8 +40,7 @@ class DiscImageFile : public XFile { DiscImageEntry* entry_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_DEVICES_DISC_IMAGE_FILE_H_ +#endif // XENIA_VFS_DEVICES_DISC_IMAGE_FILE_H_ diff --git a/src/xenia/kernel/fs/devices/host_path_device.cc b/src/xenia/vfs/devices/host_path_device.cc similarity index 85% rename from src/xenia/kernel/fs/devices/host_path_device.cc rename to src/xenia/vfs/devices/host_path_device.cc index 437c66b04..3731670fa 100644 --- a/src/xenia/kernel/fs/devices/host_path_device.cc +++ b/src/xenia/vfs/devices/host_path_device.cc @@ -7,16 +7,15 @@ ****************************************************************************** */ -#include "xenia/kernel/fs/devices/host_path_device.h" +#include "xenia/vfs/devices/host_path_device.h" +#include "xenia/base/filesystem.h" #include "xenia/base/logging.h" -#include "xenia/base/fs.h" -#include "xenia/kernel/fs/devices/host_path_entry.h" +#include "xenia/vfs/devices/host_path_entry.h" #include "xenia/kernel/objects/xfile.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { HostPathDevice::HostPathDevice(const std::string& path, const std::wstring& local_path, bool read_only) @@ -37,7 +36,7 @@ std::unique_ptr HostPathDevice::ResolvePath(const char* path) { // Only check the file exists when the device is read-only if (read_only_) { - if (!xe::fs::PathExists(full_path)) { + if (!xe::filesystem::PathExists(full_path)) { return nullptr; } } @@ -48,6 +47,5 @@ std::unique_ptr HostPathDevice::ResolvePath(const char* path) { return std::make_unique(this, path, full_path); } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/devices/host_path_device.h b/src/xenia/vfs/devices/host_path_device.h similarity index 77% rename from src/xenia/kernel/fs/devices/host_path_device.h rename to src/xenia/vfs/devices/host_path_device.h index ccb228798..b801008d6 100644 --- a/src/xenia/kernel/fs/devices/host_path_device.h +++ b/src/xenia/vfs/devices/host_path_device.h @@ -7,16 +7,15 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_DEVICES_HOST_PATH_DEVICE_H_ -#define XENIA_KERNEL_FS_DEVICES_HOST_PATH_DEVICE_H_ +#ifndef XENIA_VFS_DEVICES_HOST_PATH_DEVICE_H_ +#define XENIA_VFS_DEVICES_HOST_PATH_DEVICE_H_ #include -#include "xenia/kernel/fs/device.h" +#include "xenia/vfs/device.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class HostPathDevice : public Device { public: @@ -33,8 +32,7 @@ class HostPathDevice : public Device { bool read_only_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_DEVICES_HOST_PATH_DEVICE_H_ +#endif // XENIA_VFS_DEVICES_HOST_PATH_DEVICE_H_ diff --git a/src/xenia/kernel/fs/devices/host_path_entry.cc b/src/xenia/vfs/devices/host_path_entry.cc similarity index 97% rename from src/xenia/kernel/fs/devices/host_path_entry.cc rename to src/xenia/vfs/devices/host_path_entry.cc index f7ed0081a..2b7401215 100644 --- a/src/xenia/kernel/fs/devices/host_path_entry.cc +++ b/src/xenia/vfs/devices/host_path_entry.cc @@ -7,16 +7,15 @@ ****************************************************************************** */ -#include "xenia/kernel/fs/devices/host_path_entry.h" +#include "xenia/vfs/devices/host_path_entry.h" #include "xenia/base/mapped_memory.h" #include "xenia/base/math.h" #include "xenia/base/string.h" -#include "xenia/kernel/fs/devices/host_path_file.h" +#include "xenia/vfs/devices/host_path_file.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class HostPathMemoryMapping : public MemoryMapping { public: @@ -177,6 +176,5 @@ X_STATUS HostPathEntry::Open(KernelState* kernel_state, Mode mode, bool async, return X_STATUS_SUCCESS; } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/devices/host_path_entry.h b/src/xenia/vfs/devices/host_path_entry.h similarity index 83% rename from src/xenia/kernel/fs/devices/host_path_entry.h rename to src/xenia/vfs/devices/host_path_entry.h index ae6682c45..2d2a365e0 100644 --- a/src/xenia/kernel/fs/devices/host_path_entry.h +++ b/src/xenia/vfs/devices/host_path_entry.h @@ -7,14 +7,13 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_DEVICES_HOST_PATH_ENTRY_H_ -#define XENIA_KERNEL_FS_DEVICES_HOST_PATH_ENTRY_H_ +#ifndef XENIA_VFS_DEVICES_HOST_PATH_ENTRY_H_ +#define XENIA_VFS_DEVICES_HOST_PATH_ENTRY_H_ -#include "xenia/kernel/fs/entry.h" +#include "xenia/vfs/entry.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class HostPathEntry : public Entry { public: @@ -40,8 +39,7 @@ class HostPathEntry : public Entry { HANDLE find_file_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_DEVICES_HOST_PATH_ENTRY_H_ +#endif // XENIA_VFS_DEVICES_HOST_PATH_ENTRY_H_ diff --git a/src/xenia/kernel/fs/devices/host_path_file.cc b/src/xenia/vfs/devices/host_path_file.cc similarity index 92% rename from src/xenia/kernel/fs/devices/host_path_file.cc rename to src/xenia/vfs/devices/host_path_file.cc index 29e38aaf5..e20b7522c 100644 --- a/src/xenia/kernel/fs/devices/host_path_file.cc +++ b/src/xenia/vfs/devices/host_path_file.cc @@ -7,14 +7,13 @@ ****************************************************************************** */ -#include "xenia/kernel/fs/devices/host_path_file.h" +#include "xenia/vfs/devices/host_path_file.h" -#include "xenia/kernel/fs/device.h" -#include "xenia/kernel/fs/devices/host_path_entry.h" +#include "xenia/vfs/device.h" +#include "xenia/vfs/devices/host_path_entry.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { HostPathFile::HostPathFile(KernelState* kernel_state, Mode mode, HostPathEntry* entry, HANDLE file_handle) @@ -74,6 +73,5 @@ X_STATUS HostPathFile::WriteSync(const void* buffer, size_t buffer_length, } } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/devices/host_path_file.h b/src/xenia/vfs/devices/host_path_file.h similarity index 86% rename from src/xenia/kernel/fs/devices/host_path_file.h rename to src/xenia/vfs/devices/host_path_file.h index 0c73ab514..cb58c2b1f 100644 --- a/src/xenia/kernel/fs/devices/host_path_file.h +++ b/src/xenia/vfs/devices/host_path_file.h @@ -7,16 +7,15 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_DEVICES_HOST_PATH_FILE_H_ -#define XENIA_KERNEL_FS_DEVICES_HOST_PATH_FILE_H_ +#ifndef XENIA_VFS_DEVICES_HOST_PATH_FILE_H_ +#define XENIA_VFS_DEVICES_HOST_PATH_FILE_H_ #include #include "xenia/kernel/objects/xfile.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class HostPathEntry; @@ -46,8 +45,7 @@ class HostPathFile : public XFile { HANDLE file_handle_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_DEVICES_HOST_PATH_FILE_H_ +#endif // XENIA_VFS_DEVICES_HOST_PATH_FILE_H_ diff --git a/src/xenia/kernel/fs/devices/stfs_container_device.cc b/src/xenia/vfs/devices/stfs_container_device.cc similarity index 89% rename from src/xenia/kernel/fs/devices/stfs_container_device.cc rename to src/xenia/vfs/devices/stfs_container_device.cc index 4addc264c..eae3c6131 100644 --- a/src/xenia/kernel/fs/devices/stfs_container_device.cc +++ b/src/xenia/vfs/devices/stfs_container_device.cc @@ -7,17 +7,16 @@ ****************************************************************************** */ -#include "xenia/kernel/fs/devices/stfs_container_device.h" +#include "xenia/vfs/devices/stfs_container_device.h" #include "xenia/base/logging.h" #include "xenia/base/math.h" -#include "xenia/kernel/fs/stfs.h" -#include "xenia/kernel/fs/devices/stfs_container_entry.h" +#include "xenia/vfs/stfs.h" +#include "xenia/vfs/devices/stfs_container_entry.h" #include "xenia/kernel/objects/xfile.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { STFSContainerDevice::STFSContainerDevice(const std::string& path, const std::wstring& local_path) @@ -67,6 +66,5 @@ std::unique_ptr STFSContainerDevice::ResolvePath(const char* path) { stfs_entry); } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/devices/stfs_container_device.h b/src/xenia/vfs/devices/stfs_container_device.h similarity index 77% rename from src/xenia/kernel/fs/devices/stfs_container_device.h rename to src/xenia/vfs/devices/stfs_container_device.h index fd6b2eee0..219e22f06 100644 --- a/src/xenia/kernel/fs/devices/stfs_container_device.h +++ b/src/xenia/vfs/devices/stfs_container_device.h @@ -7,18 +7,17 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_DEVICES_STFS_CONTAINER_DEVICE_H_ -#define XENIA_KERNEL_FS_DEVICES_STFS_CONTAINER_DEVICE_H_ +#ifndef XENIA_VFS_DEVICES_STFS_CONTAINER_DEVICE_H_ +#define XENIA_VFS_DEVICES_STFS_CONTAINER_DEVICE_H_ #include #include #include "xenia/base/mapped_memory.h" -#include "xenia/kernel/fs/device.h" +#include "xenia/vfs/device.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class STFS; @@ -37,8 +36,7 @@ class STFSContainerDevice : public Device { STFS* stfs_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_DEVICES_STFS_CONTAINER_DEVICE_H_ +#endif // XENIA_VFS_DEVICES_STFS_CONTAINER_DEVICE_H_ diff --git a/src/xenia/kernel/fs/devices/stfs_container_entry.cc b/src/xenia/vfs/devices/stfs_container_entry.cc similarity index 94% rename from src/xenia/kernel/fs/devices/stfs_container_entry.cc rename to src/xenia/vfs/devices/stfs_container_entry.cc index 2d38a75f7..2a963f3fd 100644 --- a/src/xenia/kernel/fs/devices/stfs_container_entry.cc +++ b/src/xenia/vfs/devices/stfs_container_entry.cc @@ -7,14 +7,13 @@ ****************************************************************************** */ -#include "xenia/kernel/fs/devices/stfs_container_entry.h" +#include "xenia/vfs/devices/stfs_container_entry.h" #include "xenia/base/math.h" -#include "xenia/kernel/fs/devices/stfs_container_file.h" +#include "xenia/vfs/devices/stfs_container_file.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { STFSContainerEntry::STFSContainerEntry(Device* device, const char* path, MappedMemory* mmap, @@ -95,6 +94,5 @@ X_STATUS STFSContainerEntry::Open(KernelState* kernel_state, Mode mode, return X_STATUS_SUCCESS; } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/devices/stfs_container_entry.h b/src/xenia/vfs/devices/stfs_container_entry.h similarity index 78% rename from src/xenia/kernel/fs/devices/stfs_container_entry.h rename to src/xenia/vfs/devices/stfs_container_entry.h index b6666bf73..7a4660403 100644 --- a/src/xenia/kernel/fs/devices/stfs_container_entry.h +++ b/src/xenia/vfs/devices/stfs_container_entry.h @@ -7,20 +7,19 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_DEVICES_STFS_CONTAINER_ENTRY_H_ -#define XENIA_KERNEL_FS_DEVICES_STFS_CONTAINER_ENTRY_H_ +#ifndef XENIA_VFS_DEVICES_STFS_CONTAINER_ENTRY_H_ +#define XENIA_VFS_DEVICES_STFS_CONTAINER_ENTRY_H_ #include #include -#include "xenia/base/fs.h" +#include "xenia/base/filesystem.h" #include "xenia/base/mapped_memory.h" -#include "xenia/kernel/fs/entry.h" -#include "xenia/kernel/fs/stfs.h" +#include "xenia/vfs/entry.h" +#include "xenia/vfs/stfs.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class STFSContainerEntry : public Entry { public: @@ -42,12 +41,11 @@ class STFSContainerEntry : public Entry { MappedMemory* mmap_; STFSEntry* stfs_entry_; - xe::fs::WildcardEngine find_engine_; + xe::filesystem::WildcardEngine find_engine_; STFSEntry::child_it_t it_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_DEVICES_STFS_CONTAINER_ENTRY_H_ +#endif // XENIA_VFS_DEVICES_STFS_CONTAINER_ENTRY_H_ diff --git a/src/xenia/kernel/fs/devices/stfs_container_file.cc b/src/xenia/vfs/devices/stfs_container_file.cc similarity index 91% rename from src/xenia/kernel/fs/devices/stfs_container_file.cc rename to src/xenia/vfs/devices/stfs_container_file.cc index 48cc4be39..9fe9b878d 100644 --- a/src/xenia/kernel/fs/devices/stfs_container_file.cc +++ b/src/xenia/vfs/devices/stfs_container_file.cc @@ -7,17 +7,16 @@ ****************************************************************************** */ -#include "xenia/kernel/fs/devices/stfs_container_file.h" +#include "xenia/vfs/devices/stfs_container_file.h" #include -#include "xenia/kernel/fs/device.h" -#include "xenia/kernel/fs/devices/stfs_container_entry.h" -#include "xenia/kernel/fs/stfs.h" +#include "xenia/vfs/device.h" +#include "xenia/vfs/devices/stfs_container_entry.h" +#include "xenia/vfs/stfs.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { STFSContainerFile::STFSContainerFile(KernelState* kernel_state, Mode mode, STFSContainerEntry* entry) @@ -76,6 +75,5 @@ X_STATUS STFSContainerFile::ReadSync(void* buffer, size_t buffer_length, return X_STATUS_SUCCESS; } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/devices/stfs_container_file.h b/src/xenia/vfs/devices/stfs_container_file.h similarity index 84% rename from src/xenia/kernel/fs/devices/stfs_container_file.h rename to src/xenia/vfs/devices/stfs_container_file.h index a4193308b..c273d4e30 100644 --- a/src/xenia/kernel/fs/devices/stfs_container_file.h +++ b/src/xenia/vfs/devices/stfs_container_file.h @@ -7,14 +7,13 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_DEVICES_STFS_CONTAINER_FILE_H_ -#define XENIA_KERNEL_FS_DEVICES_STFS_CONTAINER_FILE_H_ +#ifndef XENIA_VFS_DEVICES_STFS_CONTAINER_FILE_H_ +#define XENIA_VFS_DEVICES_STFS_CONTAINER_FILE_H_ #include "xenia/kernel/objects/xfile.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class STFSContainerEntry; @@ -41,8 +40,7 @@ class STFSContainerFile : public XFile { STFSContainerEntry* entry_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_DEVICES_STFS_CONTAINER_FILE_H_ +#endif // XENIA_VFS_DEVICES_STFS_CONTAINER_FILE_H_ diff --git a/src/xenia/kernel/fs/entry.cc b/src/xenia/vfs/entry.cc similarity index 87% rename from src/xenia/kernel/fs/entry.cc rename to src/xenia/vfs/entry.cc index 623b623bb..d944d2e5c 100644 --- a/src/xenia/kernel/fs/entry.cc +++ b/src/xenia/vfs/entry.cc @@ -7,14 +7,13 @@ ****************************************************************************** */ -#include "xenia/kernel/fs/entry.h" +#include "xenia/vfs/entry.h" #include "xenia/base/string.h" -#include "xenia/kernel/fs/device.h" +#include "xenia/vfs/device.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { MemoryMapping::MemoryMapping(uint8_t* address, size_t length) : address_(address), length_(length) {} @@ -32,6 +31,5 @@ Entry::~Entry() = default; bool Entry::is_read_only() const { return device_->is_read_only(); } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/entry.h b/src/xenia/vfs/entry.h similarity index 92% rename from src/xenia/kernel/fs/entry.h rename to src/xenia/vfs/entry.h index 3e9338ae5..073d2a14e 100644 --- a/src/xenia/kernel/fs/entry.h +++ b/src/xenia/vfs/entry.h @@ -7,8 +7,8 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_ENTRY_H_ -#define XENIA_KERNEL_FS_ENTRY_H_ +#ifndef XENIA_VFS_ENTRY_H_ +#define XENIA_VFS_ENTRY_H_ #include #include @@ -28,8 +28,9 @@ class X_FILE_FS_VOLUME_INFORMATION; } // namespace xe namespace xe { -namespace kernel { -namespace fs { +namespace vfs { + +using namespace xe::kernel; class Device; @@ -86,8 +87,7 @@ class Entry { std::string name_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_ENTRY_H_ +#endif // XENIA_VFS_ENTRY_H_ diff --git a/src/xenia/kernel/fs/gdfx.cc b/src/xenia/vfs/gdfx.cc similarity index 96% rename from src/xenia/kernel/fs/gdfx.cc rename to src/xenia/vfs/gdfx.cc index caed1a656..c612d3eca 100644 --- a/src/xenia/kernel/fs/gdfx.cc +++ b/src/xenia/vfs/gdfx.cc @@ -9,13 +9,12 @@ * - abgx360 */ -#include "xenia/kernel/fs/gdfx.h" +#include "xenia/vfs/gdfx.h" #include "xenia/base/math.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { const size_t kXESectorSize = 2048; @@ -29,7 +28,7 @@ GDFXEntry::~GDFXEntry() { } } -GDFXEntry* GDFXEntry::GetChild(const xe::fs::WildcardEngine& engine, +GDFXEntry* GDFXEntry::GetChild(const xe::filesystem::WildcardEngine& engine, child_it_t& ref_it) { GDFXEntry* child_entry(nullptr); while (ref_it != children.end()) { @@ -202,6 +201,5 @@ bool GDFX::ReadEntry(ParseState& state, const uint8_t* buffer, return true; } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/gdfx.h b/src/xenia/vfs/gdfx.h similarity index 85% rename from src/xenia/kernel/fs/gdfx.h rename to src/xenia/vfs/gdfx.h index a9890f28a..8cbc8cd27 100644 --- a/src/xenia/kernel/fs/gdfx.h +++ b/src/xenia/vfs/gdfx.h @@ -7,19 +7,18 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_GDFX_H_ -#define XENIA_KERNEL_FS_GDFX_H_ +#ifndef XENIA_VFS_GDFX_H_ +#define XENIA_VFS_GDFX_H_ #include -#include "xenia/base/fs.h" +#include "xenia/base/filesystem.h" #include "xenia/base/mapped_memory.h" -#include "xenia/kernel/fs/entry.h" +#include "xenia/vfs/entry.h" #include "xenia/xbox.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class GDFX; @@ -31,7 +30,8 @@ class GDFXEntry { typedef std::vector child_t; typedef child_t::iterator child_it_t; - GDFXEntry* GetChild(const xe::fs::WildcardEngine& engine, child_it_t& ref_it); + GDFXEntry* GetChild(const xe::filesystem::WildcardEngine& engine, + child_it_t& ref_it); GDFXEntry* GetChild(const char* name); void Dump(int indent); @@ -90,8 +90,7 @@ class GDFX { GDFXEntry* root_entry_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_GDFX_H_ +#endif // XENIA_VFS_GDFX_H_ diff --git a/src/xenia/kernel/fs/stfs.cc b/src/xenia/vfs/stfs.cc similarity index 98% rename from src/xenia/kernel/fs/stfs.cc rename to src/xenia/vfs/stfs.cc index 8aec34367..074b003fc 100644 --- a/src/xenia/kernel/fs/stfs.cc +++ b/src/xenia/vfs/stfs.cc @@ -9,15 +9,14 @@ * - free60 */ -#include "xenia/kernel/fs/stfs.h" +#include "xenia/vfs/stfs.h" #include #include "xenia/base/logging.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { #define XEGETUINT24BE(p) \ (((uint32_t)xe::load_and_swap((p) + 0) << 16) | \ @@ -102,7 +101,7 @@ STFSEntry::STFSEntry() update_timestamp(0), access_timestamp(0) {} -STFSEntry* STFSEntry::GetChild(const xe::fs::WildcardEngine& engine, +STFSEntry* STFSEntry::GetChild(const xe::filesystem::WildcardEngine& engine, child_it_t& ref_it) { STFSEntry* child_entry(nullptr); while (ref_it != children.end()) { @@ -340,6 +339,5 @@ STFS::BlockHash_t STFS::GetBlockHash(const uint8_t* map_ptr, return {next_block_index, info}; } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/stfs.h b/src/xenia/vfs/stfs.h similarity index 94% rename from src/xenia/kernel/fs/stfs.h rename to src/xenia/vfs/stfs.h index 505d7dfd6..e41151c88 100644 --- a/src/xenia/kernel/fs/stfs.h +++ b/src/xenia/vfs/stfs.h @@ -7,20 +7,19 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_STFS_H_ -#define XENIA_KERNEL_FS_STFS_H_ +#ifndef XENIA_VFS_STFS_H_ +#define XENIA_VFS_STFS_H_ #include #include -#include "xenia/base/fs.h" +#include "xenia/base/filesystem.h" #include "xenia/base/mapped_memory.h" -#include "xenia/kernel/fs/entry.h" +#include "xenia/vfs/entry.h" #include "xenia/xbox.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class STFS; @@ -134,7 +133,8 @@ class STFSEntry { typedef std::vector> child_t; typedef child_t::iterator child_it_t; - STFSEntry* GetChild(const xe::fs::WildcardEngine& engine, child_it_t& ref_it); + STFSEntry* GetChild(const xe::filesystem::WildcardEngine& engine, + child_it_t& ref_it); STFSEntry* GetChild(const char* name); void Dump(int indent); @@ -194,8 +194,7 @@ class STFS { std::unique_ptr root_entry_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_STFS_H_ +#endif // XENIA_VFS_STFS_H_ diff --git a/src/xenia/kernel/fs/filesystem.cc b/src/xenia/vfs/virtual_file_system.cc similarity index 74% rename from src/xenia/kernel/fs/filesystem.cc rename to src/xenia/vfs/virtual_file_system.cc index afca000ae..614eaaa2b 100644 --- a/src/xenia/kernel/fs/filesystem.cc +++ b/src/xenia/vfs/virtual_file_system.cc @@ -7,22 +7,21 @@ ****************************************************************************** */ -#include "xenia/kernel/fs/filesystem.h" +#include "xenia/vfs/virtual_file_system.h" -#include "xenia/base/fs.h" +#include "xenia/base/filesystem.h" #include "xenia/base/logging.h" #include "xenia/base/string.h" -#include "xenia/kernel/fs/devices/disc_image_device.h" -#include "xenia/kernel/fs/devices/host_path_device.h" -#include "xenia/kernel/fs/devices/stfs_container_device.h" +#include "xenia/vfs/devices/disc_image_device.h" +#include "xenia/vfs/devices/host_path_device.h" +#include "xenia/vfs/devices/stfs_container_device.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { -FileSystem::FileSystem() {} +VirtualFileSystem::VirtualFileSystem() {} -FileSystem::~FileSystem() { +VirtualFileSystem::~VirtualFileSystem() { // Delete all devices. // This will explode if anyone is still using data from them. for (std::vector::iterator it = devices_.begin(); @@ -33,7 +32,7 @@ FileSystem::~FileSystem() { symlinks_.clear(); } -fs::FileSystemType FileSystem::InferType(const std::wstring& local_path) { +FileSystemType VirtualFileSystem::InferType(const std::wstring& local_path) { auto last_slash = local_path.find_last_of(xe::path_separator); auto last_dot = local_path.find_last_of('.'); if (last_dot < last_slash) { @@ -51,8 +50,8 @@ fs::FileSystemType FileSystem::InferType(const std::wstring& local_path) { } } -int FileSystem::InitializeFromPath(fs::FileSystemType type, - const std::wstring& local_path) { +int VirtualFileSystem::InitializeFromPath(FileSystemType type, + const std::wstring& local_path) { switch (type) { case FileSystemType::STFS_TITLE: { // Register the container in the virtual filesystem. @@ -104,20 +103,20 @@ int FileSystem::InitializeFromPath(fs::FileSystemType type, return 0; } -int FileSystem::RegisterDevice(const std::string& path, Device* device) { +int VirtualFileSystem::RegisterDevice(const std::string& path, Device* device) { devices_.push_back(device); return 0; } -int FileSystem::RegisterHostPathDevice(const std::string& path, - const std::wstring& local_path, - bool read_only) { +int VirtualFileSystem::RegisterHostPathDevice(const std::string& path, + const std::wstring& local_path, + bool read_only) { Device* device = new HostPathDevice(path, local_path, read_only); return RegisterDevice(path, device); } -int FileSystem::RegisterDiscImageDevice(const std::string& path, - const std::wstring& local_path) { +int VirtualFileSystem::RegisterDiscImageDevice(const std::string& path, + const std::wstring& local_path) { DiscImageDevice* device = new DiscImageDevice(path, local_path); if (device->Init()) { return 1; @@ -125,8 +124,8 @@ int FileSystem::RegisterDiscImageDevice(const std::string& path, return RegisterDevice(path, device); } -int FileSystem::RegisterSTFSContainerDevice(const std::string& path, - const std::wstring& local_path) { +int VirtualFileSystem::RegisterSTFSContainerDevice( + const std::string& path, const std::wstring& local_path) { STFSContainerDevice* device = new STFSContainerDevice(path, local_path); if (device->Init()) { return 1; @@ -134,13 +133,13 @@ int FileSystem::RegisterSTFSContainerDevice(const std::string& path, return RegisterDevice(path, device); } -int FileSystem::CreateSymbolicLink(const std::string& path, - const std::string& target) { +int VirtualFileSystem::CreateSymbolicLink(const std::string& path, + const std::string& target) { symlinks_.insert({path, target}); return 0; } -int FileSystem::DeleteSymbolicLink(const std::string& path) { +int VirtualFileSystem::DeleteSymbolicLink(const std::string& path) { auto& it = symlinks_.find(path); if (it == symlinks_.end()) { return 1; @@ -149,9 +148,9 @@ int FileSystem::DeleteSymbolicLink(const std::string& path) { return 0; } -std::unique_ptr FileSystem::ResolvePath(const std::string& path) { +std::unique_ptr VirtualFileSystem::ResolvePath(const std::string& path) { // Resolve relative paths - std::string normalized_path(xe::fs::CanonicalizePath(path)); + std::string normalized_path(xe::filesystem::CanonicalizePath(path)); // Resolve symlinks. std::string device_path; @@ -192,9 +191,9 @@ std::unique_ptr FileSystem::ResolvePath(const std::string& path) { return nullptr; } -X_STATUS FileSystem::Open(std::unique_ptr entry, - KernelState* kernel_state, Mode mode, bool async, - XFile** out_file) { +X_STATUS VirtualFileSystem::Open(std::unique_ptr entry, + KernelState* kernel_state, Mode mode, + bool async, XFile** out_file) { auto result = entry->Open(kernel_state, mode, async, out_file); if (XSUCCEEDED(result)) { entry.release(); @@ -202,6 +201,5 @@ X_STATUS FileSystem::Open(std::unique_ptr entry, return result; } -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe diff --git a/src/xenia/kernel/fs/filesystem.h b/src/xenia/vfs/virtual_file_system.h similarity index 85% rename from src/xenia/kernel/fs/filesystem.h rename to src/xenia/vfs/virtual_file_system.h index 91a90980b..c324c1d33 100644 --- a/src/xenia/kernel/fs/filesystem.h +++ b/src/xenia/vfs/virtual_file_system.h @@ -7,19 +7,18 @@ ****************************************************************************** */ -#ifndef XENIA_KERNEL_FS_FILESYSTEM_H_ -#define XENIA_KERNEL_FS_FILESYSTEM_H_ +#ifndef XENIA_VFS_VIRTUAL_FILE_SYSTEM_H_ +#define XENIA_VFS_VIRTUAL_FILE_SYSTEM_H_ #include #include #include #include -#include "xenia/kernel/fs/entry.h" +#include "xenia/vfs/entry.h" namespace xe { -namespace kernel { -namespace fs { +namespace vfs { class Device; @@ -29,10 +28,10 @@ enum class FileSystemType { XEX_FILE, }; -class FileSystem { +class VirtualFileSystem { public: - FileSystem(); - ~FileSystem(); + VirtualFileSystem(); + ~VirtualFileSystem(); FileSystemType InferType(const std::wstring& local_path); int InitializeFromPath(FileSystemType type, const std::wstring& local_path); @@ -57,8 +56,7 @@ class FileSystem { std::unordered_map symlinks_; }; -} // namespace fs -} // namespace kernel +} // namespace vfs } // namespace xe -#endif // XENIA_KERNEL_FS_FILESYSTEM_H_ +#endif // XENIA_VFS_VIRTUAL_FILE_SYSTEM_H_