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_Close(Handle handle);
|
||||||
Result FSFILE_Read(Handle handle, u32 *bytesRead, u64 offset, u32 *buffer, u32 size);
|
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);
|
Result FSFILE_GetSize(Handle handle, u64 *size);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
typedef signed int s32;
|
typedef signed int s32;
|
||||||
typedef signed long long s64;
|
typedef signed long long s64;
|
||||||
|
|
||||||
|
typedef u16 wchar;
|
||||||
|
|
||||||
typedef u32 Handle;
|
typedef u32 Handle;
|
||||||
typedef u32 Result;
|
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[4]=(size<<4)|12;
|
||||||
cmdbuf[5]=(u32)buffer;
|
cmdbuf[5]=(u32)buffer;
|
||||||
|
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svc_sendSyncRequest(handle)))return ret;
|
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];
|
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)
|
Result FSFILE_GetSize(Handle handle, u64 *size)
|
||||||
{
|
{
|
||||||
u32 *cmdbuf=getThreadCommandBuffer();
|
u32 *cmdbuf=getThreadCommandBuffer();
|
||||||
|
@ -19,7 +19,7 @@ void getSrvHandle(Handle* out)
|
|||||||
if(!out)return;
|
if(!out)return;
|
||||||
|
|
||||||
svc_connectToPort(out, "srv:");
|
svc_connectToPort(out, "srv:");
|
||||||
srv_10002(*out);
|
srv_Initialize(*out);
|
||||||
}
|
}
|
||||||
|
|
||||||
void srv_getServiceHandle(Handle handle, Handle* out, char* server)
|
void srv_getServiceHandle(Handle handle, Handle* out, char* server)
|
||||||
|
Loading…
Reference in New Issue
Block a user