From afccbe51a4a3490c534e910aca6fad62afc907b8 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 22 Jan 2019 03:52:52 +0100 Subject: [PATCH] VFS: Place new files in the correct subdirectory. Oops, every new file was ending up in the root directory. Also make sure we create the inode in the same FS as the parent directory. --- VirtualFileSystem/VirtualFileSystem.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/VirtualFileSystem/VirtualFileSystem.cpp b/VirtualFileSystem/VirtualFileSystem.cpp index f6e3484d04..c7d7d80df8 100644 --- a/VirtualFileSystem/VirtualFileSystem.cpp +++ b/VirtualFileSystem/VirtualFileSystem.cpp @@ -169,8 +169,8 @@ RetainPtr VFS::create(const String& path, int& error, int option } InodeIdentifier parent_dir; - auto existing_dir = resolve_path(path, base, error, 0, &parent_dir); - if (existing_dir.is_valid()) { + auto existing_file = resolve_path(path, base, error, 0, &parent_dir); + if (existing_file.is_valid()) { error = -EEXIST; return nullptr; } @@ -182,7 +182,7 @@ RetainPtr VFS::create(const String& path, int& error, int option return nullptr; } dbgprintf("VFS::create_file: '%s' in %u:%u\n", p.basename().characters(), parent_dir.fsid(), parent_dir.index()); - auto new_file = base.fs()->create_inode(base.fs()->root_inode(), p.basename(), mode, 0, error); + auto new_file = parent_dir.fs()->create_inode(parent_dir, p.basename(), mode, 0, error); if (!new_file) return nullptr;