diff --git a/kernel/vfs.c b/kernel/vfs.c index 634dc0e..559de67 100644 --- a/kernel/vfs.c +++ b/kernel/vfs.c @@ -39,22 +39,24 @@ vfs_node_t* vfs_find(const char* path) { char* tkn = strtok_r(path_cpy, "/", &sav); while (tkn != NULL) { if (!current || !current->find) { - current = NULL; - break; + return NULL; } current = current->find(current, tkn); + tkn = strtok_r(NULL, "/", &sav); if (current == NULL) { - break; + return NULL; } - tkn = strtok_r(NULL, "/", &sav); + if (tkn && !(current->flags & VFS_DIRECTORY)) { + return NULL; + } } kfree(path_cpy); - return NULL; + return current; } vfs_node_t* vfs_mkdir(vfs_node_t* parent, const char* name) {