#include <3ds/services/fs.h>
#include <3ds/ipc.h>
#include <3ds/env.h>
+#include "../internal.h"
static Handle fsuHandle;
static int fsuRefCount;
+static Handle fsSessionForArchive(FS_ArchiveID arch)
+{
+ ThreadVars* tv = getThreadVars();
+ if (tv->fs_magic == FS_OVERRIDE_MAGIC && (arch != ARCHIVE_SDMC || tv->fs_sdmc))
+ return tv->fs_session;
+ return fsuHandle;
+}
+
+static Handle fsSession(void)
+{
+ return fsSessionForArchive(0);
+}
+
Result fsInit(void)
{
Result ret = 0;
ret = srvGetServiceHandle(&fsuHandle, "fs:USER");
if (R_SUCCEEDED(ret) && envGetHandle("fs:USER") == 0)
{
- ret = FSUSER_Initialize();
+ ret = FSUSER_Initialize(fsuHandle);
if (R_FAILED(ret)) svcCloseHandle(fsuHandle);
}
svcCloseHandle(fsuHandle);
}
+void fsUseSession(Handle session, bool sdmc)
+{
+ ThreadVars* tv = getThreadVars();
+ tv->fs_magic = FS_OVERRIDE_MAGIC;
+ tv->fs_session = session;
+ tv->fs_sdmc = sdmc;
+}
+
+void fsEndUseSession(void)
+{
+ ThreadVars* tv = getThreadVars();
+ tv->fs_magic = 0;
+}
+
FS_Path fsMakePath(FS_PathType type, const void* path)
{
FS_Path p = { type, 0, path };
cmdbuf[7] = (u32) output;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
-Result FSUSER_Initialize(void)
+Result FSUSER_Initialize(Handle session)
{
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[1] = IPC_Desc_CurProcessHandle();
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(session))) return ret;
return cmdbuf[1];
}
cmdbuf[9] = (u32) path.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archive.id)))) return ret;
if(out) *out = cmdbuf[3];
cmdbuf[12] = (u32) path.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archive.id)))) return ret;
if(out) *out = cmdbuf[3];
cmdbuf[7] = (u32) path.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archive.id)))) return ret;
return cmdbuf[1];
}
cmdbuf[13] = (u32) dstPath.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(srcArchive.id)))) return ret;
return cmdbuf[1];
}
cmdbuf[7] = (u32) path.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archive.id)))) return ret;
return cmdbuf[1];
}
cmdbuf[7] = (u32) path.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archive.id)))) return ret;
return cmdbuf[1];
}
cmdbuf[10] = (u32) path.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archive.id)))) return ret;
return cmdbuf[1];
}
cmdbuf[8] = (u32) path.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archive.id)))) return ret;
return cmdbuf[1];
}
cmdbuf[13] = (u32) dstPath.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(srcArchive.id)))) return ret;
return cmdbuf[1];
}
cmdbuf[6] = (u32) path.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archive.id)))) return ret;
if(out) *out = cmdbuf[3];
cmdbuf[5] = (u32) archive->lowPath.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
archive->handle = cmdbuf[2] | ((u64) cmdbuf[3] << 32);
cmdbuf[9] = (u32) output;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archive.id)))) return ret;
return cmdbuf[1];
}
cmdbuf[2] = (u32) (archive->handle >> 32);
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[2] = (u32) (archive.handle >> 32);
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archive.id)))) return ret;
if(freeBytes) *freeBytes = cmdbuf[2] | ((u64) cmdbuf[3] << 32);
cmdbuf[0] = IPC_MakeHeader(0x813,0,0); // 0x8130000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(type) *type = cmdbuf[2] & 0xFF;
cmdbuf[0] = IPC_MakeHeader(0x814,0,0); // 0x8140000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(ARCHIVE_SDMC)))) return ret;
if(archiveResource) memcpy(archiveResource, &cmdbuf[2], sizeof(FS_ArchiveResource));
cmdbuf[0] = IPC_MakeHeader(0x815,0,0); // 0x8150000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(archiveResource) memcpy(archiveResource, &cmdbuf[2], sizeof(FS_ArchiveResource));
cmdbuf[0] = IPC_MakeHeader(0x816,0,0); // 0x8160000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(error) *error = cmdbuf[2];
cmdbuf[0] = IPC_MakeHeader(0x817,0,0); // 0x8170000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(detected) *detected = cmdbuf[2] & 0xFF;
cmdbuf[0] = IPC_MakeHeader(0x818,0,0); // 0x8180000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(writable) *writable = cmdbuf[2] & 0xFF;
cmdbuf[3] = (u32) out;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[3] = (u32) out;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[0] = IPC_MakeHeader(0x81B,0,0); // 0x81B0000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(speedInfo) *speedInfo = cmdbuf[2];
cmdbuf[0] = IPC_MakeHeader(0x81C,0,0); // 0x81C0000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(speedInfo) *speedInfo = cmdbuf[2];
cmdbuf[3] = (u32) out;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[3] = (u32) out;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[0] = IPC_MakeHeader(0x81F,0,0); // 0x81F0000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[0] = IPC_MakeHeader(0x820,0,0); // 0x8200000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[0] = IPC_MakeHeader(0x821,0,0); // 0x8210000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(inserted) *inserted = cmdbuf[2] & 0xFF;
cmdbuf[0] = IPC_MakeHeader(0x822,0,0); // 0x8220000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(status) *status = cmdbuf[2] & 0xFF;
cmdbuf[0] = IPC_MakeHeader(0x823,0,0); // 0x8230000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(status) *status = cmdbuf[2] & 0xFF;
cmdbuf[0] = IPC_MakeHeader(0x824,0,0); // 0x8240000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(status) *status = cmdbuf[2] & 0xFF;
cmdbuf[1] = commandId;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[2] = address;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[4] = (u32) output;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[5] = (u32) output;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[4] = (u32) input;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[5] = (u32) input;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[5] = (u32) output;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[4] = (u32) input;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[1] = address;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[1] = processId;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(info) memcpy(info, &cmdbuf[2], sizeof(FS_ProductInfo));
cmdbuf[1] = processId;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(info) memcpy(info, &cmdbuf[2], sizeof(FS_ProgramInfo));
cmdbuf[1] = baudRate;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[1] = busMode;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[0] = IPC_MakeHeader(0x839,0,0); // 0x8390000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[4] = type;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(index) *index = cmdbuf[2] & 0xFFFF;
cmdbuf[5] = (u32) header;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[5] = (u32) banner;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[4] = processId;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(access) *access = cmdbuf[2] & 0xFF;
cmdbuf[5] = (u32) fileSizes;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(quotaSize) *quotaSize = cmdbuf[2] | ((u64) cmdbuf[3] << 32);
cmdbuf[1] = accessRight;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[0] = IPC_MakeHeader(0x841,0,0); // 0x8410000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[1] = 0;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[0] = IPC_MakeHeader(0x843,0,0); // 0x8430000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[0] = IPC_MakeHeader(0x844,0,0); // 0x8440000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[5] = (u32) path.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archiveId)))) return ret;
if(totalSize) *totalSize = cmdbuf[2];
if(directories) *directories = cmdbuf[3];
cmdbuf[6] = (u32) header;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[3] = (u32) out;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[1] = mediaType;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(archiveResource) memcpy(archiveResource, &cmdbuf[2], sizeof(FS_ArchiveResource));
cmdbuf[3] = (u32) seed;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[3] = (u32) seed;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[11] = (u32) path.data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[6] = (u32) banner;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[6] = (u32) data;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(bytesRead) *bytesRead = cmdbuf[2];
cmdbuf[1] = 0;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(fileSize) *fileSize = cmdbuf[2] | ((u64) cmdbuf[3] << 32);
cmdbuf[11] = (u32) smdh;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
memcpy(&cmdbuf[1], &info, sizeof(FS_ExtSaveDataInfo));
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[7] = (u32) smdh;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(bytesRead) *bytesRead = cmdbuf[2];
memcpy(&cmdbuf[1], &info, sizeof(FS_ExtSaveDataInfo));
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(totalBlocks) *totalBlocks = cmdbuf[2] | ((u64) cmdbuf[3] << 32);
if(freeBlocks) *freeBlocks = cmdbuf[4] | ((u64) cmdbuf[5] << 32);
cmdbuf[6] = (u32) ids;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(idsWritten) *idsWritten = cmdbuf[2];
cmdbuf[9] = duplicateData;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
memcpy(&cmdbuf[1], &info, sizeof(FS_SystemSaveDataInfo));
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[0] = IPC_MakeHeader(0x858,0,0); // 0x8580000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(context) memcpy(context, &cmdbuf[2], sizeof(FS_DeviceMoveContext));
cmdbuf[9] = clear;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[3] = priority;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[2] = (u32) (archive.handle >> 32);
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archive.id)))) return ret;
if(priority) *priority = cmdbuf[2];
cmdbuf[3] = emulateEndurance;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[1] = enable;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[3] = (u32) ids;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(idsWritten) *idsWritten = cmdbuf[2];
return cmdbuf[1];
}
-Result FSUSER_InitializeWithSdkVersion(u32 version)
+Result FSUSER_InitializeWithSdkVersion(Handle session, u32 version)
{
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[2] = IPC_Desc_CurProcessHandle();
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(session))) return ret;
return cmdbuf[1];
}
cmdbuf[1] = priority;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[0] = IPC_MakeHeader(0x863,0,0); // 0x8630000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(priority) *priority = cmdbuf[2];
cmdbuf[5] = titleVariation;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[3] = titleVariation;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(exists) *exists = cmdbuf[2] & 0xFF;
if(value) *value = cmdbuf[3] | ((u64) cmdbuf[4] << 32);
cmdbuf[7] = (u32) output;
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
return cmdbuf[1];
}
cmdbuf[0] = IPC_MakeHeader(0x868,0,0); // 0x8680000
Result ret = 0;
- if(R_FAILED(ret = svcSendSyncRequest(fsuHandle))) return ret;
+ if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
if(mediaType) *mediaType = cmdbuf[2] & 0xFF;