srv : mini-fix
FS : FSFILE_Write
This commit is contained in:
parent
dd36d587eb
commit
8dcc7e5cce
@ -35,6 +35,7 @@ Result FSUSER_OpenFile(Handle handle, Handle* out, u32 archiveid, FS_archive arc
|
||||
|
||||
Result FSFILE_Close(Handle handle);
|
||||
Result FSFILE_Read(Handle handle, u32 *bytesRead, u64 offset, u32 *buffer, u32 size);
|
||||
Result FSFILE_Write(Handle handle, u32 *bytesWritten, u64 offset, u32 *buffer, u32 size, u32 flushFlags);
|
||||
Result FSFILE_GetSize(Handle handle, u64 *size);
|
||||
|
||||
#endif
|
||||
|
@ -16,6 +16,8 @@
|
||||
typedef signed int s32;
|
||||
typedef signed long long s64;
|
||||
|
||||
typedef u16 wchar;
|
||||
|
||||
typedef u32 Handle;
|
||||
typedef u32 Result;
|
||||
|
||||
|
@ -66,7 +66,6 @@ Result FSFILE_Read(Handle handle, u32 *bytesRead, u64 offset, u32 *buffer, u32 s
|
||||
cmdbuf[4]=(size<<4)|12;
|
||||
cmdbuf[5]=(u32)buffer;
|
||||
|
||||
|
||||
Result ret=0;
|
||||
if((ret=svc_sendSyncRequest(handle)))return ret;
|
||||
|
||||
@ -75,6 +74,27 @@ Result FSFILE_Read(Handle handle, u32 *bytesRead, u64 offset, u32 *buffer, u32 s
|
||||
return cmdbuf[1];
|
||||
}
|
||||
|
||||
//WARNING : using wrong flushFlags CAN corrupt the archive you're writing to
|
||||
Result FSFILE_Write(Handle handle, u32 *bytesWritten, u64 offset, u32 *buffer, u32 size, u32 flushFlags)
|
||||
{
|
||||
u32 *cmdbuf=getThreadCommandBuffer();
|
||||
|
||||
cmdbuf[0]=0x08030102;
|
||||
cmdbuf[1]=(u32)offset;
|
||||
cmdbuf[2]=(u32)(offset>>32);
|
||||
cmdbuf[3]=size;
|
||||
cmdbuf[4]=flushFlags;
|
||||
cmdbuf[5]=(size<<4)|12;
|
||||
cmdbuf[6]=(u32)buffer;
|
||||
|
||||
Result ret=0;
|
||||
if((ret=svc_sendSyncRequest(handle)))return ret;
|
||||
|
||||
if(bytesWritten)*bytesWritten=cmdbuf[2];
|
||||
|
||||
return cmdbuf[1];
|
||||
}
|
||||
|
||||
Result FSFILE_GetSize(Handle handle, u64 *size)
|
||||
{
|
||||
u32 *cmdbuf=getThreadCommandBuffer();
|
||||
|
@ -19,7 +19,7 @@ void getSrvHandle(Handle* out)
|
||||
if(!out)return;
|
||||
|
||||
svc_connectToPort(out, "srv:");
|
||||
srv_10002(*out);
|
||||
srv_Initialize(*out);
|
||||
}
|
||||
|
||||
void srv_getServiceHandle(Handle handle, Handle* out, char* server)
|
||||
|
Loading…
Reference in New Issue
Block a user