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_