| 400 | } |
| 401 | |
| 402 | Result FSUSER_ControlArchive(FS_Archive archive, FS_ArchiveAction action, void* input, u32 inputSize, void* output, u32 outputSize) |
| 403 | { |
| 404 | u32 *cmdbuf = getThreadCommandBuffer(); |
| 405 | |
| 406 | cmdbuf[0] = IPC_MakeHeader(0x80D,5,4); // 0x80D0144 |
| 407 | cmdbuf[1] = (u32) archive; |
| 408 | cmdbuf[2] = (u32) (archive >> 32); |
| 409 | cmdbuf[3] = action; |
| 410 | cmdbuf[4] = inputSize; |
| 411 | cmdbuf[5] = outputSize; |
| 412 | cmdbuf[6] = IPC_Desc_Buffer(inputSize, IPC_BUFFER_R); |
| 413 | cmdbuf[7] = (u32) input; |
| 414 | cmdbuf[8] = IPC_Desc_Buffer(outputSize, IPC_BUFFER_W); |
| 415 | cmdbuf[9] = (u32) output; |
| 416 | |
| 417 | Result ret = 0; |
| 418 | if(R_FAILED(ret = svcSendSyncRequest(fsSessionForArchive(archive)))) return ret; |
| 419 | |
| 420 | return cmdbuf[1]; |
| 421 | } |
| 422 | |
| 423 | Result FSUSER_CloseArchive(FS_Archive archive) |
| 424 | { |
no test coverage detected