X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FFilesystems%2FExt2%2Fdir.c;h=5eb476f4b1f3b88ecc867f85ca1a2c6107b39831;hb=5f2024e5977e0cca0993a20dad5ab794c94d5711;hp=c7d8dd899cceb78602bc32bc592043fb3ca870ef;hpb=e56e258bdc6345e33454ddb127b2d87c536a0f39;p=tpg%2Facess2.git diff --git a/Modules/Filesystems/Ext2/dir.c b/Modules/Filesystems/Ext2/dir.c index c7d8dd89..5eb476f4 100644 --- a/Modules/Filesystems/Ext2/dir.c +++ b/Modules/Filesystems/Ext2/dir.c @@ -23,6 +23,23 @@ tVFS_Node *Ext2_FindDir(tVFS_Node *Node, const char *FileName); // --- Helpers --- tVFS_Node *Ext2_int_CreateNode(tExt2_Disk *Disk, Uint InodeId); +// === GLOBALS === +tVFS_NodeType gExt2_DirType = { + .TypeName = "ext2-dir", + .ReadDir = Ext2_ReadDir, + .FindDir = Ext2_FindDir, + .MkNod = Ext2_MkNod, + .Relink = Ext2_Relink, + .Link = Ext2_Link, + .Close = Ext2_CloseFile + }; +tVFS_NodeType gExt2_FileType = { + .TypeName = "ext2-file", + .Read = Ext2_Read, + .Write = Ext2_Write, + .Close = Ext2_CloseFile + }; + // === CODE === /** * \brief Reads a directory entry @@ -345,9 +362,7 @@ tVFS_Node *Ext2_int_CreateNode(tExt2_Disk *Disk, Uint InodeID) retNode.ACLs = VFS_UnixToAcessACL(inode.i_mode & 0777, inode.i_uid, inode.i_gid); // Set Function Pointers - retNode.Read = Ext2_Read; - retNode.Write = Ext2_Write; - retNode.Close = Ext2_CloseFile; + retNode.Type = &gExt2_FileType; switch(inode.i_mode & EXT2_S_IFMT) { @@ -362,11 +377,7 @@ tVFS_Node *Ext2_int_CreateNode(tExt2_Disk *Disk, Uint InodeID) break; // Directory case EXT2_S_IFDIR: - retNode.ReadDir = Ext2_ReadDir; - retNode.FindDir = Ext2_FindDir; - retNode.MkNod = Ext2_MkNod; - retNode.Relink = Ext2_Relink; - retNode.Link = Ext2_Link; + retNode.Type = &gExt2_DirType; retNode.Flags = VFS_FFLAG_DIRECTORY; retNode.Data = calloc( sizeof(Uint16), DivUp(retNode.Size, Disk->BlockSize) ); break;