diff --git a/fs/fs.c b/fs/fs.c index e0a269a4..ae55c137 100644 --- a/fs/fs.c +++ b/fs/fs.c @@ -72,8 +72,6 @@ int open_fs(fildes_t* file, const char* name) if (name[0] == '/') file_node = fs_root; - else - return -ENOENT; while((name[j] != '\0') && (file_node != NULL)) { i = 0; @@ -96,13 +94,15 @@ int open_fs(fildes_t* file, const char* name) if (file_node->open != 0) ret = file->node->open(file, NULL); spinlock_unlock(&file_node->lock); - } else { /* file doesn't exist */ + } else if (dir_node) { /* file doesn't exist */ spinlock_lock(&dir_node->lock); file->node = dir_node; // Has the dir_node got an open callback? if (dir_node->open != 0) ret = dir_node->open(file, fname); spinlock_unlock(&dir_node->lock); + } else { + ret = -ENOENT; } return ret; @@ -182,9 +182,6 @@ vfs_node_t* findnode_fs(const char* name) if (name[0] == '/') ret = fs_root; - else - return -ENOENT; - while((name[j] != '\0') && ret) { i = 0;