소스 검색

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.
Andreas Kling 6 년 전
부모
커밋
afccbe51a4
1개의 변경된 파일3개의 추가작업 그리고 3개의 파일을 삭제
  1. 3 3
      VirtualFileSystem/VirtualFileSystem.cpp

+ 3 - 3
VirtualFileSystem/VirtualFileSystem.cpp

@@ -169,8 +169,8 @@ RetainPtr<FileDescriptor> 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<FileDescriptor> 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;