X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FFilesystems%2FInitRD%2Fmain.c;h=ff24b5162595e58938f06c339d6affa2e8d132d2;hb=a54379686bef79c24e4a1e2337611f33d33c8b4b;hp=cc54f27d0f6c1086bc710e3da5cb731e20ccd5a6;hpb=c3d486ba13c6cd12558d4c0cf01d3fd93e797d64;p=tpg%2Facess2.git diff --git a/Modules/Filesystems/InitRD/main.c b/Modules/Filesystems/InitRD/main.c index cc54f27d..ff24b516 100644 --- a/Modules/Filesystems/InitRD/main.c +++ b/Modules/Filesystems/InitRD/main.c @@ -5,6 +5,8 @@ #include "initrd.h" #include +#define DUMP_ON_MOUNT 1 + // === IMPORTS == extern tVFS_Node gInitRD_RootNode; @@ -14,7 +16,8 @@ tVFS_Node *InitRD_InitDevice(char *Device, char **Arguments); void InitRD_Unmount(tVFS_Node *Node); Uint64 InitRD_ReadFile(tVFS_Node *Node, Uint64 Offset, Uint64 Size, void *Buffer); char *InitRD_ReadDir(tVFS_Node *Node, int ID); -tVFS_Node *InitRD_FindDir(tVFS_Node *Node, char *Name); +tVFS_Node *InitRD_FindDir(tVFS_Node *Node, const char *Name); +void InitRD_DumpDir(tVFS_Node *Node, int Indent); // === GLOBALS === MODULE_DEFINE(0, 0x0A, FS_InitRD, InitRD_Install, NULL); @@ -28,6 +31,7 @@ tVFS_Driver gInitRD_FSInfo = { int InitRD_Install(char **Arguments) { VFS_AddDriver( &gInitRD_FSInfo ); + return MODULE_ERR_OK; } @@ -36,6 +40,9 @@ int InitRD_Install(char **Arguments) */ tVFS_Node *InitRD_InitDevice(char *Device, char **Arguments) { + #if DUMP_ON_MOUNT + InitRD_DumpDir( &gInitRD_RootNode, 0 ); + #endif return &gInitRD_RootNode; } @@ -77,12 +84,12 @@ char *InitRD_ReadDir(tVFS_Node *Node, int ID) /** * \brief Find an element in a directory */ -tVFS_Node *InitRD_FindDir(tVFS_Node *Node, char *Name) +tVFS_Node *InitRD_FindDir(tVFS_Node *Node, const char *Name) { int i; tInitRD_File *dir = Node->ImplPtr; - Log("InirRD_FindDir: Name = '%s'", Name); + //Log("InirRD_FindDir: Name = '%s'", Name); for( i = 0; i < Node->Size; i++ ) { @@ -92,3 +99,20 @@ tVFS_Node *InitRD_FindDir(tVFS_Node *Node, char *Name) return NULL; } + +void InitRD_DumpDir(tVFS_Node *Node, int Indent) +{ + int i; + char indent[Indent+1]; + tInitRD_File *dir = Node->ImplPtr; + + for( i = 0; i < Indent; i++ ) indent[i] = ' '; + indent[i] = '\0'; + + for( i = 0; i < Node->Size; i++ ) + { + //Log("%s- %p %s", indent, dir[i].Node, dir[i].Name); + if(dir[i].Node->Flags & VFS_FFLAG_DIRECTORY) + InitRD_DumpDir(dir[i].Node, Indent+1); + } +}