// === 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, Uint Flags);
+size_t VFS_MemFile_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer, Uint Flags);
// === GLOBALS ===
tVFS_NodeType gVFS_MemFileType = {
memset(ret, 0, sizeof(tVFS_Node));
// State
+ ret->Inode = base;
ret->ImplPtr = (void*)base;
ret->Size = size;
}
/**
- * \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, Uint Flags)
{
// Check for use of free'd file
if(Node->ImplPtr == NULL) return 0;
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;
}
/**
- * \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, Uint Flags)
{
// Check for use of free'd file
if(Node->ImplPtr == NULL) return 0;
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;