diff options
| -rw-r--r-- | src/core/file_sys/errors.h | 1 | ||||
| -rw-r--r-- | src/core/hle/service/filesystem/fsp_srv.cpp | 13 | 
2 files changed, 12 insertions, 2 deletions
diff --git a/src/core/file_sys/errors.h b/src/core/file_sys/errors.h index 0ed7d2a0c..d3e9a3829 100644 --- a/src/core/file_sys/errors.h +++ b/src/core/file_sys/errors.h @@ -11,6 +11,7 @@ namespace FileSys {  namespace ErrCodes {  enum {      NotFound = 1, +    SaveDataNotFound = 1002,  };  } diff --git a/src/core/hle/service/filesystem/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp_srv.cpp index 1cf97e876..eb5748cf8 100644 --- a/src/core/hle/service/filesystem/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp_srv.cpp @@ -7,6 +7,7 @@  #include "common/string_util.h"  #include "core/core.h"  #include "core/file_sys/directory.h" +#include "core/file_sys/errors.h"  #include "core/file_sys/filesystem.h"  #include "core/file_sys/storage.h"  #include "core/hle/ipc_helpers.h" @@ -531,12 +532,20 @@ void FSP_SRV::CreateSaveData(Kernel::HLERequestContext& ctx) {  void FSP_SRV::MountSaveData(Kernel::HLERequestContext& ctx) {      NGLOG_WARNING(Service_FS, "(STUBBED) called"); +    // TODO(Subv): Read the input parameters and mount the requested savedata instead of always +    // mounting the current process' savedata.      FileSys::Path unused; -    auto filesystem = OpenFileSystem(Type::SaveData, unused).Unwrap(); +    auto filesystem = OpenFileSystem(Type::SaveData, unused); + +    if (filesystem.Failed()) { +        IPC::ResponseBuilder rb{ctx, 2, 0, 0}; +        rb.Push(ResultCode(ErrorModule::FS, FileSys::ErrCodes::SaveDataNotFound)); +        return; +    }      IPC::ResponseBuilder rb{ctx, 2, 0, 1};      rb.Push(RESULT_SUCCESS); -    rb.PushIpcInterface<IFileSystem>(std::move(filesystem)); +    rb.PushIpcInterface<IFileSystem>(std::move(filesystem.Unwrap()));  }  void FSP_SRV::GetGlobalAccessLogMode(Kernel::HLERequestContext& ctx) {  | 
