X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fvfs%2Fmemfile.c;h=f019c3d3a41b451c833a1c4aed551004eb37959c;hb=4e00e82a0ecfa03a11d96313fc53a014287319ce;hp=14b39481d0c82d7adc503d605ace864855f27ead;hpb=48743e39650eb1ef988380e9d95f27fd40d3a9ce;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/vfs/memfile.c b/KernelLand/Kernel/vfs/memfile.c index 14b39481..f019c3d3 100644 --- a/KernelLand/Kernel/vfs/memfile.c +++ b/KernelLand/Kernel/vfs/memfile.c @@ -9,8 +9,8 @@ // === PROTOTYPES === tVFS_Node *VFS_MemFile_Create(const char *Path); void VFS_MemFile_Close(tVFS_Node *Node); -Uint64 VFS_MemFile_Read(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer); -Uint64 VFS_MemFile_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, const void *Buffer); +size_t VFS_MemFile_Read(tVFS_Node *Node, off_t Offset, size_t Length, void *Buffer); +size_t VFS_MemFile_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer); // === GLOBALS === tVFS_NodeType gVFS_MemFileType = { @@ -91,10 +91,9 @@ void VFS_MemFile_Close(tVFS_Node *Node) } /** - * \fn Uint64 VFS_MemFile_Read(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer) * \brief Read from a memory file */ -Uint64 VFS_MemFile_Read(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer) +size_t VFS_MemFile_Read(tVFS_Node *Node, off_t Offset, size_t Length, void *Buffer) { // Check for use of free'd file if(Node->ImplPtr == NULL) return 0; @@ -103,6 +102,8 @@ Uint64 VFS_MemFile_Read(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buf if(Offset > Node->Size) return 0; // Truncate data read if needed + if(Length > Node->Size) + Length = Node->Size; if(Offset + Length > Node->Size) Length = Node->Size - Offset; @@ -113,10 +114,9 @@ Uint64 VFS_MemFile_Read(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buf } /** - * \fn Uint64 VFS_MemFile_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer) * \brief Write to a memory file */ -Uint64 VFS_MemFile_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, const void *Buffer) +size_t VFS_MemFile_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer) { // Check for use of free'd file if(Node->ImplPtr == NULL) return 0; @@ -125,6 +125,8 @@ Uint64 VFS_MemFile_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, const vo if(Offset > Node->Size) return 0; // Truncate data read if needed + if(Length > Node->Size) + Length = Node->Size; if(Offset + Length > Node->Size) Length = Node->Size - Offset;