add helper function to list the file system

This commit is contained in:
Stefan Lankes 2015-01-18 07:42:58 +01:00
parent 562f54c6f0
commit 119d54c545
2 changed files with 39 additions and 1 deletions

37
fs/fs.c
View file

@ -207,3 +207,40 @@ vfs_node_t* findnode_fs(const char* name)
return ret;
}
void list_fs(vfs_node_t* node, uint32_t depth)
{
int j, i = 0;
dirent_t* dirent = NULL;
fildes_t* file = kmalloc(sizeof(fildes_t));
file->offset = 0;
file->flags = 0;
while ((dirent = readdir_fs(node, i)) != 0) {
for(j=0; j<depth; j++)
kputs(" ");
kprintf("%s\n", dirent->name);
if (strcmp(dirent->name, ".") && strcmp(dirent->name, "..")) {
vfs_node_t *new_node = finddir_fs(node, dirent->name);
if (new_node) {
if (new_node->type == FS_FILE) {
char buff[16] = {[0 ... 15] = 0x00};
file->node = new_node;
file->offset = 0;
file->flags = 0;
read_fs(file, (uint8_t*)buff, 8);
for(j=0; j<depth+1; j++)
kputs(" ");
kprintf("content: %s\n", buff);
} else list_fs(new_node, depth+1);
}
}
i++;
}
kfree(file);
}

View file

@ -285,7 +285,8 @@ vfs_node_t* mkdir_fs(vfs_node_t* node, const char* name);
*/
vfs_node_t* findnode_fs(const char* name);
/* @} */
/** @brief List a filesystem hirachically */
void list_fs(vfs_node_t* node, uint32_t depth);
int initrd_init(void);