diff options
| author | bunnei <bunneidev@gmail.com> | 2015-02-10 18:27:16 -0500 |
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2015-02-10 18:27:16 -0500 |
| commit | 27e6e6b3cb2ee1ab3a996c2b4be1d9a3c4e6b75d (patch) | |
| tree | fd8b0290d4a0353c11c0e168200b20b5a89e297c /src/core/file_sys/archive_extsavedata.cpp | |
| parent | 67db6aa4ce1f57f7d99406c8924ed41e74d36dbe (diff) | |
| parent | 0d2b6dd6566b6718c806181c1f1c3bcdcede86ae (diff) | |
Merge pull request #540 from yuriks/multi-archives
FS: Allow multiple instances of the same archive type to be open at once
Diffstat (limited to 'src/core/file_sys/archive_extsavedata.cpp')
| -rw-r--r-- | src/core/file_sys/archive_extsavedata.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/core/file_sys/archive_extsavedata.cpp b/src/core/file_sys/archive_extsavedata.cpp index 33e4e76f8..0363c9771 100644 --- a/src/core/file_sys/archive_extsavedata.cpp +++ b/src/core/file_sys/archive_extsavedata.cpp @@ -6,6 +6,7 @@ #include "common/common_types.h" #include "common/file_util.h" +#include "common/make_unique.h" #include "core/file_sys/archive_extsavedata.h" #include "core/file_sys/disk_archive.h" @@ -33,12 +34,12 @@ std::string GetExtDataContainerPath(const std::string& mount_point, bool shared) SYSTEM_ID.c_str(), SDCARD_ID.c_str()); } -Archive_ExtSaveData::Archive_ExtSaveData(const std::string& mount_location, bool shared) - : DiskArchive(GetExtDataContainerPath(mount_location, shared)) { +ArchiveFactory_ExtSaveData::ArchiveFactory_ExtSaveData(const std::string& mount_location, bool shared) + : mount_point(GetExtDataContainerPath(mount_location, shared)) { LOG_INFO(Service_FS, "Directory %s set as base for ExtSaveData.", mount_point.c_str()); } -bool Archive_ExtSaveData::Initialize() { +bool ArchiveFactory_ExtSaveData::Initialize() { if (!FileUtil::CreateFullPath(mount_point)) { LOG_ERROR(Service_FS, "Unable to create ExtSaveData base path."); return false; @@ -47,18 +48,18 @@ bool Archive_ExtSaveData::Initialize() { return true; } -ResultCode Archive_ExtSaveData::Open(const Path& path) { +ResultVal<std::unique_ptr<ArchiveBackend>> ArchiveFactory_ExtSaveData::Open(const Path& path) { std::string fullpath = GetExtSaveDataPath(mount_point, path); if (!FileUtil::Exists(fullpath)) { // TODO(Subv): Check error code, this one is probably wrong return ResultCode(ErrorDescription::FS_NotFormatted, ErrorModule::FS, ErrorSummary::InvalidState, ErrorLevel::Status); } - concrete_mount_point = fullpath; - return RESULT_SUCCESS; + auto archive = Common::make_unique<DiskArchive>(fullpath); + return MakeResult<std::unique_ptr<ArchiveBackend>>(std::move(archive)); } -ResultCode Archive_ExtSaveData::Format(const Path& path) const { +ResultCode ArchiveFactory_ExtSaveData::Format(const Path& path) { std::string fullpath = GetExtSaveDataPath(mount_point, path); FileUtil::CreateFullPath(fullpath); return RESULT_SUCCESS; |
