diff options
| author | Zach Hilman <zachhilman@gmail.com> | 2018-10-28 14:58:09 -0400 | 
|---|---|---|
| committer | Zach Hilman <zachhilman@gmail.com> | 2018-10-29 13:54:39 -0400 | 
| commit | 2e8177f0c93768e1d1a7d6a830e9c68111c2afd6 (patch) | |
| tree | 6821f78defeab63dec1093d55d46b17cbfa69bce /src/core/hle | |
| parent | df264d2ccb39a4d7ffd4efd3158e66db3aa6952a (diff) | |
fsp_srv: Implement command 61: OpenSaveDataInfoReaderBySaveDataSpaceId
Needed by Checkpoint. Returns an object that can iterate through all savedata on the system.
Diffstat (limited to 'src/core/hle')
| -rw-r--r-- | src/core/hle/service/filesystem/fsp_srv.cpp | 13 | ||||
| -rw-r--r-- | src/core/hle/service/filesystem/fsp_srv.h | 1 | 
2 files changed, 13 insertions, 1 deletions
| diff --git a/src/core/hle/service/filesystem/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp_srv.cpp index c1c83a11d..56102a3db 100644 --- a/src/core/hle/service/filesystem/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp_srv.cpp @@ -452,6 +452,7 @@ private:  };  FSP_SRV::FSP_SRV() : ServiceFramework("fsp-srv") { +    // clang-format off      static const FunctionInfo functions[] = {          {0, nullptr, "MountContent"},          {1, &FSP_SRV::Initialize, "Initialize"}, @@ -485,7 +486,7 @@ FSP_SRV::FSP_SRV() : ServiceFramework("fsp-srv") {          {58, nullptr, "ReadSaveDataFileSystemExtraData"},          {59, nullptr, "WriteSaveDataFileSystemExtraData"},          {60, nullptr, "OpenSaveDataInfoReader"}, -        {61, nullptr, "OpenSaveDataInfoReaderBySaveDataSpaceId"}, +        {61, &FSP_SRV::OpenSaveDataInfoReaderBySaveDataSpaceId, "OpenSaveDataInfoReaderBySaveDataSpaceId"},          {62, nullptr, "OpenCacheStorageList"},          {64, nullptr, "OpenSaveDataInternalStorageFileSystem"},          {65, nullptr, "UpdateSaveDataMacForDebug"}, @@ -544,6 +545,7 @@ FSP_SRV::FSP_SRV() : ServiceFramework("fsp-srv") {          {1009, nullptr, "GetAndClearMemoryReportInfo"},          {1100, nullptr, "OverrideSaveDataTransferTokenSignVerificationKey"},      }; +    // clang-format on      RegisterHandlers(functions);  } @@ -618,6 +620,15 @@ void FSP_SRV::OpenReadOnlySaveDataFileSystem(Kernel::HLERequestContext& ctx) {      MountSaveData(ctx);  } +void FSP_SRV::OpenSaveDataInfoReaderBySaveDataSpaceId(Kernel::HLERequestContext& ctx) { +    IPC::RequestParser rp{ctx}; +    const auto space = rp.PopRaw<FileSys::SaveDataSpaceId>(); + +    IPC::ResponseBuilder rb{ctx, 2, 0, 1}; +    rb.Push(RESULT_SUCCESS); +    rb.PushIpcInterface<ISaveDataInfoReader>(std::make_shared<ISaveDataInfoReader>(space)); +} +  void FSP_SRV::GetGlobalAccessLogMode(Kernel::HLERequestContext& ctx) {      LOG_WARNING(Service_FS, "(STUBBED) called"); diff --git a/src/core/hle/service/filesystem/fsp_srv.h b/src/core/hle/service/filesystem/fsp_srv.h index 4aa0358cb..e7abec0a3 100644 --- a/src/core/hle/service/filesystem/fsp_srv.h +++ b/src/core/hle/service/filesystem/fsp_srv.h @@ -25,6 +25,7 @@ private:      void CreateSaveData(Kernel::HLERequestContext& ctx);      void MountSaveData(Kernel::HLERequestContext& ctx);      void OpenReadOnlySaveDataFileSystem(Kernel::HLERequestContext& ctx); +    void OpenSaveDataInfoReaderBySaveDataSpaceId(Kernel::HLERequestContext& ctx);      void GetGlobalAccessLogMode(Kernel::HLERequestContext& ctx);      void OpenDataStorageByCurrentProcess(Kernel::HLERequestContext& ctx);      void OpenDataStorageByDataId(Kernel::HLERequestContext& ctx); | 
