diff options
| author | Amlal <amlal.elmahrouss@icloud.com> | 2025-02-24 20:49:30 +0100 |
|---|---|---|
| committer | Amlal <amlal.elmahrouss@icloud.com> | 2025-02-24 20:49:30 +0100 |
| commit | a69dc6b982be67156ba4273b37a87c9e03a54b2c (patch) | |
| tree | 6e6c84c58d06a663bb23c3a3d8be36ed9cc51197 /dev | |
| parent | 9ff5f391e7d7630c3b03faeba34696efa47f37a7 (diff) | |
IMPL: NeFS doesn't store full path now in catalog name.
IMPL: HPFS defining data structures.
META: Ran format command for project.
Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/Boot/BootKit/BootKit.h | 2 | ||||
| -rw-r--r-- | dev/Kernel/FSKit/HPFS.h | 19 | ||||
| -rw-r--r-- | dev/Kernel/FSKit/IndexableProperty.h | 6 | ||||
| -rw-r--r-- | dev/Kernel/FSKit/NeFS.h | 16 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalDebugOutput.cc | 2 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc | 15 | ||||
| -rw-r--r-- | dev/Kernel/NetworkKit/MAC.h | 2 | ||||
| -rw-r--r-- | dev/Kernel/src/FS/NeFS.cc | 33 |
8 files changed, 69 insertions, 26 deletions
diff --git a/dev/Boot/BootKit/BootKit.h b/dev/Boot/BootKit/BootKit.h index 12018048..4e85ace9 100644 --- a/dev/Boot/BootKit/BootKit.h +++ b/dev/Boot/BootKit/BootKit.h @@ -205,7 +205,7 @@ namespace Boot /// @brief File entry for **BDiskFormatFactory**. struct BFileDescriptor final { - Char fFileName[kNeFSNodeNameLen]; + Char fFileName[kNeFSCatalogNameLen]; Int32 fKind; }; diff --git a/dev/Kernel/FSKit/HPFS.h b/dev/Kernel/FSKit/HPFS.h index 9e2a3e36..ef1b4ad0 100644 --- a/dev/Kernel/FSKit/HPFS.h +++ b/dev/Kernel/FSKit/HPFS.h @@ -11,9 +11,12 @@ /// @file HPFS.h
/// @brief HPFS filesystem support.
-#define kHPFSVersion 0x0100
+#define kHPFSVersion (0x0100)
#define kHPFSMagic " HPFS"
-#define kHPFSMagicLen 8
+#define kHPFSMagicLen (8)
+
+#define kHPFSFileNameLen (255)
+#define kHPFSPartNameLen (255)
#define kHPFSMinimumDiskSize (gib_cast(64))
@@ -32,6 +35,7 @@ struct HPFS_BOOT_NODE; struct HPFS_BOOT_NODE final
{
NeOS::Char fMagic[kHPFSMagicLen];
+ NeOS::Char fPartName[kHPFSPartNameLen];
NeOS::UInt32 fVersion;
NeOS::UInt64 fBadSectors;
NeOS::UInt64 fSectorCount;
@@ -41,4 +45,15 @@ struct HPFS_BOOT_NODE final NeOS::UInt8 fTextEncoding;
NeOS::UInt64 fRootINode;
NeOS::UInt64 fRecoveryINode;
+};
+
+struct HPFS_INDEX_NODE
+{
+ NeOS::Char fName[kHPFSFileNameLen];
+ NeOS::UInt32 fFlags;
+ NeOS::UInt16 fKind;
+ NeOS::UInt32 fSize;
+ NeOS::Lba fFirstINode;
+ NeOS::Lba fLastINode;
+ NeOS::UInt32 fChecksum;
};
\ No newline at end of file diff --git a/dev/Kernel/FSKit/IndexableProperty.h b/dev/Kernel/FSKit/IndexableProperty.h index a942cc7c..091f4c9b 100644 --- a/dev/Kernel/FSKit/IndexableProperty.h +++ b/dev/Kernel/FSKit/IndexableProperty.h @@ -10,8 +10,8 @@ #include <CompilerKit/CompilerKit.h> #include <KernelKit/DriveMgr.h> -#define kIndexerNodeNameLength 255 -#define kIndexerClaimed 0xCF +#define kIndexerCatalogNameLength 255 +#define kIndexerClaimed 0xCF namespace NeOS { @@ -21,7 +21,7 @@ namespace NeOS { public: Char Drive[kDriveNameLen]; - Char Path[kIndexerNodeNameLength]; + Char Path[kIndexerCatalogNameLength]; }; class IndexableProperty final : public Property diff --git a/dev/Kernel/FSKit/NeFS.h b/dev/Kernel/FSKit/NeFS.h index 19123a4c..0383c234 100644 --- a/dev/Kernel/FSKit/NeFS.h +++ b/dev/Kernel/FSKit/NeFS.h @@ -29,7 +29,7 @@ default. #define kNeFSInvalidFork (-1) #define kNeFSInvalidCatalog (-1) -#define kNeFSNodeNameLen (256) +#define kNeFSCatalogNameLen (256) #define kNeFSMinimumDiskSize (gib_cast(4)) @@ -142,8 +142,8 @@ struct PACKED NEFS_CATALOG_STRUCT final { BOOL ForkOrCatalog : 1 {0}; - NeOS::Char Name[kNeFSNodeNameLen] = {0}; - NeOS::Char Mime[kNeFSMimeNameLen] = {0}; + NeOS::Char Name[kNeFSCatalogNameLen] = {0}; + NeOS::Char Mime[kNeFSMimeNameLen] = {0}; /// Catalog flags. NeOS::UInt16 Flags; @@ -167,13 +167,15 @@ struct PACKED NEFS_CATALOG_STRUCT final NeOS::Lba DataFork; NeOS::Lba ResourceFork; - /// Tree allocation tracker. + /// Buddy allocation tracker. NeOS::Lba NextSibling; NeOS::Lba PrevSibling; /// Best-buddy tracker. NeOS::Lba NextBestSibling; NeOS::Lba NextPrevSibling; + + NeOS::UInt32 Checksum; }; /// @brief Fork type, contains a data page. @@ -184,8 +186,8 @@ struct PACKED NEFS_FORK_STRUCT final { BOOL ForkOrCatalog : 1 {1}; - NeOS::Char ForkName[kNeFSForkNameLen] = {0}; - NeOS::Char CatalogName[kNeFSNodeNameLen] = {0}; + NeOS::Char ForkName[kNeFSForkNameLen] = {0}; + NeOS::Char CatalogName[kNeFSCatalogNameLen] = {0}; NeOS::Int32 Flags; NeOS::Int32 Kind; @@ -433,7 +435,7 @@ namespace NeOS } private: - Char mStamp[kNeFSNodeNameLen] = {"/etc/xml/journal" kNeFSJournalExt}; + Char mStamp[kNeFSCatalogNameLen] = {"/etc/xml/journal" kNeFSJournalExt}; }; namespace NeFS diff --git a/dev/Kernel/HALKit/AMD64/HalDebugOutput.cc b/dev/Kernel/HALKit/AMD64/HalDebugOutput.cc index ba4e4a7c..d5a1f327 100644 --- a/dev/Kernel/HALKit/AMD64/HalDebugOutput.cc +++ b/dev/Kernel/HALKit/AMD64/HalDebugOutput.cc @@ -84,7 +84,7 @@ namespace NeOS static int x = kFontSizeX, y = kFontSizeY; - static BOOL not_important = NO; + static BOOL not_important = YES; while (index < len) { diff --git a/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc b/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc index 99200349..c9df9b20 100644 --- a/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc +++ b/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc @@ -92,13 +92,14 @@ namespace NeOS if (packet_frame[8] != (UInt64)kFlashBridgeRevision) return; - packet_frame[16+0] = lba; - packet_frame[16+4] = sector_sz; - packet_frame[16+8] = lba; - packet_frame[16+12] = buf_sz; - packet_frame[16+14] = (UIntPtr)HAL::hal_get_phys_address(buf); - - while (packet_frame[0] == lba); + packet_frame[16 + 0] = lba; + packet_frame[16 + 4] = sector_sz; + packet_frame[16 + 8] = lba; + packet_frame[16 + 12] = buf_sz; + packet_frame[16 + 14] = (UIntPtr)HAL::hal_get_phys_address(buf); + + while (packet_frame[0] == lba) + ; } Void drv_std_read(Int32 slot, UInt64 lba, Char* buf, SizeT sector_sz, SizeT buf_sz) diff --git a/dev/Kernel/NetworkKit/MAC.h b/dev/Kernel/NetworkKit/MAC.h index 4ea05b70..c7fc25b1 100644 --- a/dev/Kernel/NetworkKit/MAC.h +++ b/dev/Kernel/NetworkKit/MAC.h @@ -24,7 +24,7 @@ namespace NeOS explicit MacAddressGetter() = default; public: - KString& AsString(); + KString& AsString(); Array<WideChar, kMACAddrLen>& AsBytes(); }; diff --git a/dev/Kernel/src/FS/NeFS.cc b/dev/Kernel/src/FS/NeFS.cc index 0666149a..29427a2a 100644 --- a/dev/Kernel/src/FS/NeFS.cc +++ b/dev/Kernel/src/FS/NeFS.cc @@ -264,7 +264,7 @@ _Output NEFS_CATALOG_STRUCT* NeFileSystemParser::CreateCatalog(_Input const Char return nullptr; } - Char parent_name[kNeFSNodeNameLen] = {0}; + Char parent_name[kNeFSCatalogNameLen] = {0}; for (SizeT indexName = 0UL; indexName < rt_string_len(name); ++indexName) { @@ -331,6 +331,7 @@ _Output NEFS_CATALOG_STRUCT* NeFileSystemParser::CreateCatalog(_Input const Char NEFS_CATALOG_STRUCT* child_catalog = new NEFS_CATALOG_STRUCT(); + child_catalog->Checksum = 0; child_catalog->ResourceForkSize = 0UL; child_catalog->DataForkSize = 0UL; child_catalog->CatalogFlags = kNeFSStatusUnlocked; @@ -340,7 +341,18 @@ _Output NEFS_CATALOG_STRUCT* NeFileSystemParser::CreateCatalog(_Input const Char child_catalog->Flags |= kNeFSFlagCreated; child_catalog->CatalogFlags = flags; - rt_copy_memory((VoidPtr)name, (VoidPtr)child_catalog->Name, + SizeT i = rt_string_len(name); + + // get rid pf \0 + --i; + + if (kind == kNeFSCatalogKindDir) + --i; + + while (name[i] != '/') + --i; + + rt_copy_memory((VoidPtr)(name + i), (VoidPtr)child_catalog->Name, rt_string_len(name)); NEFS_CATALOG_STRUCT temporary_catalog{}; @@ -737,7 +749,7 @@ _Output NEFS_CATALOG_STRUCT* NeFileSystemParser::FindCatalog(_Input const Char* if (!StringBuilder::Equals(catalog_name, NeFileSystemHelper::Root()) && local_search) { - Char parent_name[kNeFSNodeNameLen] = {0}; + Char parent_name[kNeFSCatalogNameLen] = {0}; for (SizeT indexFill = 0; indexFill < rt_string_len(catalog_name); ++indexFill) { @@ -787,6 +799,19 @@ _Output NEFS_CATALOG_STRUCT* NeFileSystemParser::FindCatalog(_Input const Char* NEFS_CATALOG_STRUCT temporary_catalog{}; + SizeT i = rt_string_len(catalog_name); + + // get rid of \0 + --i; + + if (catalog_name[i] == '/') + --i; + + while (catalog_name[i] != '/') + --i; + + const Char* tmp_name = (catalog_name + i); + kNeFSSearchThroughCatalogList: while (drive.fPacket.fPacketGood) { @@ -796,7 +821,7 @@ kNeFSSearchThroughCatalogList: drive.fInput(drive.fPacket); - if (StringBuilder::Equals(catalog_name, temporary_catalog.Name)) + if (StringBuilder::Equals(tmp_name, temporary_catalog.Name)) { if (temporary_catalog.Status == kNeFSStatusLocked && !search_hidden) |
