summaryrefslogtreecommitdiffhomepage
path: root/Private/FSKit
diff options
context:
space:
mode:
authoramlal <amlal@el-mahrouss-logic.com>2024-03-17 07:25:31 +0100
committeramlal <amlal@el-mahrouss-logic.com>2024-03-17 07:25:31 +0100
commit45548d516ddf5e88bf80940365d151e1bd69c29f (patch)
treef7347078e07a9d524e874f7f6c23622d538064bc /Private/FSKit
parenta4d4de6913fb7dd54847b0e5a004c3100bc02459 (diff)
HCR-14: A series of important fixes and improvements regarding the
kernel. Signed-off-by: amlal <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'Private/FSKit')
-rw-r--r--Private/FSKit/HCFS.hxx11
-rw-r--r--Private/FSKit/NewFS.hxx106
2 files changed, 59 insertions, 58 deletions
diff --git a/Private/FSKit/HCFS.hxx b/Private/FSKit/HCFS.hxx
index a9d4013d..90285bd9 100644
--- a/Private/FSKit/HCFS.hxx
+++ b/Private/FSKit/HCFS.hxx
@@ -12,9 +12,14 @@
#include <FirmwareKit/EPM.hxx>
#define kHCFSIdentLen 8
+#define kHCFSIdent " HCFS"
#define kHCFSNameLen 256
#define kHCFSPadLen 16
+#define kHCFSFlagDeleted 0xF0
+#define kHCFSFlagUnallocated 0x0F
+#define kHCFSFlagCatalog 0xFF
+
#define kHCFSGuid "@{0771b3c9-b977-440a-a9ca-396b6d3f07b5}"
/// @brief HCFS Balanced Tree structure.
@@ -32,6 +37,7 @@ typedef struct HCFSBTree final {
HCore::Char fReserved[384];
} PACKED HCFSBTree;
+/// @brief Catalog file for HCFS.
typedef struct HCFSCatalog {
HCore::Char fCatalogName[kHCFSNameLen];
HCore::UInt32 fCatalogKind;
@@ -48,6 +54,11 @@ typedef struct HCFSCatalog {
HCore::Char fReserved[152];
} HCFSCatalog;
+#define kHCFSCatalogKindFile 1
+#define kHCFSCatalogKindDirectory 2
+#define kHCFSCatalogKindJunction 3
+#define kHCFSCatalogKindNetwork 4
+
enum {
kHCFSHardDrive = 0xC0, // Hard Drive
kHCFSOpticalDrive = 0x0C, // Blu-Ray/DVD
diff --git a/Private/FSKit/NewFS.hxx b/Private/FSKit/NewFS.hxx
index e3469e73..63e4a017 100644
--- a/Private/FSKit/NewFS.hxx
+++ b/Private/FSKit/NewFS.hxx
@@ -31,7 +31,7 @@
#define kNewFSMinimumSectorSz 2048
#define kNewFSIdentLen 8
-#define kNewFSIdent " NEFS"
+#define kNewFSIdent " NewFS"
#define kNewFSPadLen 16
//! On EPM and GPT disks.
@@ -40,6 +40,47 @@
#define kNewFSVersionInteger 0x121
#define kNewFSVerionString "1.2.1"
+#define kNewFSCatalogKindFile 1
+#define kNewFSCatalogKindDir 2
+#define kNewFSCatalogKindAlias 3
+
+//! shared between network or
+//! other filesystems. Export forks as .zip when copying.
+#define kNewFSCatalogKindShared 4
+
+#define kNewFSCatalogKindResource 5
+#define kNewFSCatalogKindExecutable 6
+
+#define kNewFSCatalogKindPage 8
+
+#define kNewFSCatalogKindDevice 9
+#define kNewFSCatalogKindLock 10
+
+#define kNewFSSeparator '/'
+
+#define kNewFSUpDir ".."
+#define kNewFSRoot "/"
+
+#define kNewFSLF '\r'
+#define kNewFSEOF (-1)
+
+#define kNewFSBitWidth (sizeof(NewCharType))
+#define kNewFSLbaType (HCore::Lba)
+
+/// Start After the PM headers, pad 1024 bytes.
+#define kNewFSAddressAsLba (1024U)
+
+#define kResourceTypeDialog 10
+#define kResourceTypeString 11
+#define kResourceTypeMenu 12
+
+#define kConfigLen 64
+#define kPartLen 32
+
+#define kNewFSFlagDeleted 0xF0
+#define kNewFSFlagUnallocated 0x0F
+#define kNewFSFlagCatalog 0xFF
+
typedef HCore::Char NewCharType;
enum {
@@ -70,17 +111,6 @@ struct PACKED NewBootBlock final {
NewCharType Pad[kNewFSPadLen];
};
-#define kFlagDeleted 0xF0
-#define kFlagUnallocated 0x0F
-#define kFlagCatalog 0xFF
-
-#define kKindCatalog 1
-#define kKindDirectory 2
-#define kKindSymlink 3
-#define kKindPartition 4
-#define kKindDevice 5
-#define kKindNetwork 6
-
struct PACKED NewCatalog final {
NewCharType Name[kNewFSNodeNameLen];
@@ -90,16 +120,13 @@ struct PACKED NewCatalog final {
HCore::Lba FirstFork;
HCore::Lba LastFork;
- HCore::Lba SiblingRecords[12];
-};
-
-#define kNewFSMaxEntries 256
-
-struct PACKED NewCatalogRecord final {
- HCore::Lba Entries[kNewFSMaxEntries];
+ HCore::Lba NextSibling;
+ HCore::Lba PrevSibling;
};
struct PACKED NewFork final {
+ NewCharType Name[kNewFSNodeNameLen];
+
HCore::Int32 Flags;
HCore::Int32 Kind;
@@ -107,20 +134,13 @@ struct PACKED NewFork final {
HCore::Int32 ResourceKind;
HCore::Int32 ResourceFlags;
- HCore::Lba DataOffset; // Where to look for this data?
- HCore::SizeT DataSize; // Data size according using sector count.
+ HCore::Lba DataOffset; //8 Where to look for this data?
+ HCore::SizeT DataSize; /// Data size according using sector count.
HCore::Lba NextSibling;
HCore::Lba PreviousSibling;
};
-#define kResourceTypeDialog 10
-#define kResourceTypeString 11
-#define kResourceTypeMenu 12
-
-#define kConfigLen 64
-#define kPartLen 32
-
struct PACKED NewPartitionBlock final {
NewCharType Ident[kNewFSIdentLen];
NewCharType PartitionName[kPartLen];
@@ -142,36 +162,6 @@ struct PACKED NewPartitionBlock final {
HCore::Char Pad[kNewFSPadLen];
};
-#define kCatalogKindFile 1
-#define kCatalogKindDir 2
-#define kCatalogKindAlias 3
-
-//! shared between network or
-//! other filesystems. Export forks as .zip when copying.
-#define kCatalogKindShared 4
-
-#define kCatalogKindResource 5
-#define kCatalogKindExecutable 6
-
-#define kCatalogKindPage 8
-
-#define kCatalogKindDevice 9
-#define kCatalogKindLock 10
-
-#define kFilesystemSeparator '/'
-
-#define kFilesystemUpDir ".."
-#define kFilesystemRoot "/"
-
-#define kFilesystemLF '\r'
-#define kFilesystemEOF (-1)
-
-#define kFilesystemBitWidth (sizeof(NewCharType))
-#define kFilesystemLbaType (HCore::Lba)
-
-/// Start After the PM headers, pad 1024 bytes.
-#define kNewFSAddressAsLba (1024U)
-
namespace HCore {
///
/// \name NewFSParser