From 1d2f1abf972235a49d0b215bc15adc5c1e97caa3 Mon Sep 17 00:00:00 2001 From: Taj Morton Date: Sat, 8 Jul 2023 23:00:54 -0700 Subject: [PATCH] FileSystem/FATFS: Convert internal FAT inode attributes to dirent types --- Kernel/FileSystem/FATFS/FileSystem.cpp | 14 ++++++++++++++ Kernel/FileSystem/FATFS/FileSystem.h | 1 + 2 files changed, 15 insertions(+) diff --git a/Kernel/FileSystem/FATFS/FileSystem.cpp b/Kernel/FileSystem/FATFS/FileSystem.cpp index 99d3465dbe..30c143a3de 100644 --- a/Kernel/FileSystem/FATFS/FileSystem.cpp +++ b/Kernel/FileSystem/FATFS/FileSystem.cpp @@ -91,4 +91,18 @@ BlockBasedFileSystem::BlockIndex FATFS::first_block_of_cluster(u32 cluster) cons return ((cluster - first_data_cluster) * boot_record()->sectors_per_cluster) + m_first_data_sector; } +u8 FATFS::internal_file_type_to_directory_entry_type(DirectoryEntryView const& entry) const +{ + FATAttributes attrib = static_cast(entry.file_type); + if (has_flag(attrib, FATAttributes::Directory)) { + return DT_DIR; + } else if (has_flag(attrib, FATAttributes::VolumeID)) { + return DT_UNKNOWN; + } else { + // ReadOnly, Hidden, System, Archive, LongFileName. + return DT_REG; + } + return DT_UNKNOWN; +} + } diff --git a/Kernel/FileSystem/FATFS/FileSystem.h b/Kernel/FileSystem/FATFS/FileSystem.h index 794d7200e2..f6620600ea 100644 --- a/Kernel/FileSystem/FATFS/FileSystem.h +++ b/Kernel/FileSystem/FATFS/FileSystem.h @@ -26,6 +26,7 @@ public: virtual ~FATFS() override = default; virtual StringView class_name() const override { return "FATFS"sv; } virtual Inode& root_inode() override; + virtual u8 internal_file_type_to_directory_entry_type(DirectoryEntryView const& entry) const override; private: virtual ErrorOr initialize_while_locked() override;