summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/am
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-03-04 21:49:42 +0100
committerGitHub <noreply@github.com>2018-03-04 21:49:42 +0100
commit80562aaf64413f5740138dba70393789d10de580 (patch)
tree01b8f6a28202295b25eaa90e8cbbef5a9b3c0c6f /src/core/hle/service/am
parentMerge pull request #228 from Subv/unschedule_events (diff)
parentFS: Use the correct error code when trying to open files that don't exist. (diff)
downloadyuzu-80562aaf64413f5740138dba70393789d10de580.tar
yuzu-80562aaf64413f5740138dba70393789d10de580.tar.gz
yuzu-80562aaf64413f5740138dba70393789d10de580.tar.bz2
yuzu-80562aaf64413f5740138dba70393789d10de580.tar.lz
yuzu-80562aaf64413f5740138dba70393789d10de580.tar.xz
yuzu-80562aaf64413f5740138dba70393789d10de580.tar.zst
yuzu-80562aaf64413f5740138dba70393789d10de580.zip
Diffstat (limited to 'src/core/hle/service/am')
-rw-r--r--src/core/hle/service/am/am.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index d3a674cf6..d9f003ed4 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -2,12 +2,15 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
+#include <cinttypes>
+#include "core/file_sys/filesystem.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/event.h"
#include "core/hle/service/am/am.h"
#include "core/hle/service/am/applet_ae.h"
#include "core/hle/service/am/applet_oe.h"
#include "core/hle/service/apm/apm.h"
+#include "core/hle/service/filesystem/filesystem.h"
#include "core/hle/service/nvflinger/nvflinger.h"
namespace Service {
@@ -416,9 +419,24 @@ void IApplicationFunctions::PopLaunchParameter(Kernel::HLERequestContext& ctx) {
}
void IApplicationFunctions::EnsureSaveData(Kernel::HLERequestContext& ctx) {
- LOG_WARNING(Service, "(STUBBED) called");
+ IPC::RequestParser rp{ctx};
+ u128 uid = rp.PopRaw<u128>();
+
+ LOG_WARNING(Service, "(STUBBED) called uid = %016" PRIX64 "%016" PRIX64, uid[1], uid[0]);
+
IPC::ResponseBuilder rb{ctx, 4};
- rb.Push(RESULT_SUCCESS);
+
+ FileSys::Path unused;
+ auto savedata = FileSystem::OpenFileSystem(FileSystem::Type::SaveData, unused);
+ if (savedata.Failed()) {
+ // Create the save data and return an error indicating that the operation was performed.
+ FileSystem::FormatFileSystem(FileSystem::Type::SaveData);
+ // TODO(Subv): Find out the correct error code for this.
+ rb.Push(ResultCode(ErrorModule::FS, 40));
+ } else {
+ rb.Push(RESULT_SUCCESS);
+ }
+
rb.Push<u64>(0);
}