summaryrefslogtreecommitdiffhomepage
path: root/Private/FSKit
diff options
context:
space:
mode:
authorAmlal <amlalelmahrouss@icloud.com>2024-04-30 09:15:49 +0000
committerAmlal <amlalelmahrouss@icloud.com>2024-04-30 09:15:49 +0000
commit88d9199c65191647641bf06fbaa708d40e53c752 (patch)
tree7696344260c61374e331f0b24de84c9089e15ae2 /Private/FSKit
parent094218bcd2befe8c57d042db7a2945791f29c7a6 (diff)
parent62eef2c13fb95ab3cee86b0c066d26ceade417dd (diff)
Merged in MHR-18 (pull request #11)
MHR-18: NewFS: Fix fork allocation.
Diffstat (limited to 'Private/FSKit')
-rw-r--r--Private/FSKit/NewFS.hxx17
1 files changed, 9 insertions, 8 deletions
diff --git a/Private/FSKit/NewFS.hxx b/Private/FSKit/NewFS.hxx
index b461666d..4a298c96 100644
--- a/Private/FSKit/NewFS.hxx
+++ b/Private/FSKit/NewFS.hxx
@@ -30,11 +30,7 @@ default.
#define kNewFSInvalidCatalog -1
#define kNewFSNodeNameLen 256
-#ifdef __x86_64__
#define kNewFSMinimumSectorSz (512)
-#else
-#define kNewFSMinimumSectorSz (1024)
-#endif // ifdef __x86_64__
#define kNewFSIdentLen 8
#define kNewFSIdent " NewFS"
@@ -54,6 +50,8 @@ default.
#define kNewFSCatalogKindDir 2
#define kNewFSCatalogKindAlias 3
+#define kNewFSForkSize (8192)
+
//! shared between network or
//! other filesystems. Export forks as .zip when copying.
#define kNewFSCatalogKindShared 4
@@ -125,7 +123,7 @@ struct PACKED NewCatalog final {
NewOS::Lba DataForkSize;
/// Size of all resource forks.
- NewOS::Lba ResourceForkOverallSize;
+ NewOS::Lba ResourceForkSize;
NewOS::Lba DataFork;
NewOS::Lba ResourceFork;
@@ -134,7 +132,10 @@ struct PACKED NewCatalog final {
NewOS::Lba PrevSibling;
};
-/// @brief Fork type.
+/// @brief Fork type, contains a data page.
+/// @note The way we store is way different than how other filesystems do, specific chunk of code are
+/// written into either the data fork or resource fork, the resource fork is reserved for file metadata.
+/// whereas the data fork is reserved for file data.
struct PACKED NewFork final {
NewCharType Name[kNewFSNodeNameLen];
@@ -237,10 +238,10 @@ class NewFSParser final {
_Output NewCatalog* CreateCatalog(_Input const char* name);
bool WriteCatalog(_Input _Output NewCatalog* catalog,
- voidPtr data, SizeT sizeOfData);
+ voidPtr data, SizeT sizeOfData, _Input const char* forkName);
VoidPtr ReadCatalog(_Input _Output NewCatalog* catalog,
- SizeT dataSz);
+ SizeT dataSz, _Input const char* forkName);
bool Seek(_Input _Output NewCatalog* catalog, SizeT off);