support for all save types (system, bcat, cache, device).
This commit is contained in:
@@ -195,7 +195,7 @@ public:
|
|||||||
static auto GetAccountList() -> std::vector<AccountProfileBase> {
|
static auto GetAccountList() -> std::vector<AccountProfileBase> {
|
||||||
std::vector<AccountProfileBase> out;
|
std::vector<AccountProfileBase> out;
|
||||||
|
|
||||||
AccountUid uids[8];
|
AccountUid uids[ACC_USER_LIST_SIZE];
|
||||||
s32 account_count;
|
s32 account_count;
|
||||||
if (R_SUCCEEDED(accountListAllUsers(uids, std::size(uids), &account_count))) {
|
if (R_SUCCEEDED(accountListAllUsers(uids, std::size(uids), &account_count))) {
|
||||||
for (s32 i = 0; i < account_count; i++) {
|
for (s32 i = 0; i < account_count; i++) {
|
||||||
|
|||||||
@@ -551,11 +551,15 @@ struct FsNativeGameCard final : FsNative {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct FsNativeSave final : FsNative {
|
struct FsNativeSave final : FsNative {
|
||||||
FsNativeSave(FsSaveDataSpaceId save_data_space_id, const FsSaveDataAttribute *attr, bool read_only) {
|
FsNativeSave(FsSaveDataType data_type, FsSaveDataSpaceId save_data_space_id, const FsSaveDataAttribute *attr, bool read_only) {
|
||||||
if (read_only) {
|
if (data_type == FsSaveDataType_System || data_type == FsSaveDataType_SystemBcat) {
|
||||||
m_open_result = fsOpenReadOnlySaveDataFileSystem(&m_fs, save_data_space_id, attr);
|
m_open_result = fsOpenSaveDataFileSystemBySystemSaveDataId(&m_fs, FsSaveDataSpaceId_System, attr);
|
||||||
} else {
|
} else {
|
||||||
m_open_result = fsOpenSaveDataFileSystem(&m_fs, save_data_space_id, attr);
|
if (read_only) {
|
||||||
|
m_open_result = fsOpenReadOnlySaveDataFileSystem(&m_fs, save_data_space_id, attr);
|
||||||
|
} else {
|
||||||
|
m_open_result = fsOpenSaveDataFileSystem(&m_fs, save_data_space_id, attr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include "ui/list.hpp"
|
#include "ui/list.hpp"
|
||||||
#include "fs.hpp"
|
#include "fs.hpp"
|
||||||
#include "option.hpp"
|
#include "option.hpp"
|
||||||
|
#include "dumper.hpp"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <span>
|
#include <span>
|
||||||
@@ -126,6 +127,10 @@ private:
|
|||||||
void BackupSaves(std::vector<std::reference_wrapper<Entry>>& entries);
|
void BackupSaves(std::vector<std::reference_wrapper<Entry>>& entries);
|
||||||
void RestoreSave();
|
void RestoreSave();
|
||||||
|
|
||||||
|
auto BuildSavePath(const Entry& e, bool is_auto) const -> fs::FsPath;
|
||||||
|
Result RestoreSaveInternal(ProgressBox* pbox, const Entry& e, const fs::FsPath& path) const;
|
||||||
|
Result BackupSaveInternal(ProgressBox* pbox, const dump::DumpLocation& location, const Entry& e, bool compressed, bool is_auto = false) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static constexpr inline const char* INI_SECTION = "saves";
|
static constexpr inline const char* INI_SECTION = "saves";
|
||||||
|
|
||||||
@@ -138,6 +143,7 @@ private:
|
|||||||
|
|
||||||
std::vector<AccountProfileBase> m_accounts{};
|
std::vector<AccountProfileBase> m_accounts{};
|
||||||
s64 m_account_index{};
|
s64 m_account_index{};
|
||||||
|
u8 m_data_type{FsSaveDataType_Account};
|
||||||
|
|
||||||
ThreadData m_thread_data{};
|
ThreadData m_thread_data{};
|
||||||
Thread m_thread{};
|
Thread m_thread{};
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user