summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKA/Sources/FS
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-09-05 19:53:08 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-09-05 19:53:40 +0200
commit3b60a1e87ab02a1b72d8bb9f7392780899d5a0d7 (patch)
tree438f1337c0eb2ae83cf3d409c29848d396be08b2 /dev/ZKA/Sources/FS
parent432e68391357423914547a7b34311258d7598808 (diff)
[ IMP ] HPFS EBS and NeFS overhaul.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKA/Sources/FS')
-rw-r--r--dev/ZKA/Sources/FS/FAT32.cxx4
-rw-r--r--dev/ZKA/Sources/FS/NeFS.cxx28
2 files changed, 18 insertions, 14 deletions
diff --git a/dev/ZKA/Sources/FS/FAT32.cxx b/dev/ZKA/Sources/FS/FAT32.cxx
index 1f5e194b..9e22e2a8 100644
--- a/dev/ZKA/Sources/FS/FAT32.cxx
+++ b/dev/ZKA/Sources/FS/FAT32.cxx
@@ -4,9 +4,9 @@
------------------------------------------- */
-#ifdef __FSKIT_INCLUDES_FAT32__
+#ifdef __FSKIT_INCLUDES_HPFS__
#include <FirmwareKit/GPT.hxx>
#include <FirmwareKit/EPM.hxx>
-#endif // ifdef __FSKIT_INCLUDES_FAT32__
+#endif // ifdef __FSKIT_INCLUDES_HPFS__
diff --git a/dev/ZKA/Sources/FS/NeFS.cxx b/dev/ZKA/Sources/FS/NeFS.cxx
index 5bae8d4a..68078ec3 100644
--- a/dev/ZKA/Sources/FS/NeFS.cxx
+++ b/dev/ZKA/Sources/FS/NeFS.cxx
@@ -4,7 +4,7 @@
------------------------------------------- */
-#ifdef __FSKIT_USE_NEWFS__
+#ifdef __FSKIT_USE_NEFS__
#include <Modules/AHCI/AHCI.hxx>
#include <Modules/ATA/ATA.hxx>
@@ -143,9 +143,9 @@ _Output NFS_FORK_STRUCT* NeFSParser::CreateFork(_Input NFS_CATALOG_STRUCT* catal
4; /// this value gives us space for the data offset.
theFork.Flags = kNeFSFlagCreated;
- theFork.DataOffset = lba - sizeof(NFS_FORK_STRUCT) * cForkPadding;
+ theFork.DataOffset = lba - sizeof(NFS_FORK_STRUCT) - theFork.DataSize;
theFork.PreviousSibling = lbaOfPreviousFork;
- theFork.NextSibling = theFork.DataOffset - theFork.DataSize;
+ theFork.NextSibling = theFork.DataOffset + sizeof(NFS_FORK_STRUCT) + theFork.DataSize;
drv.fPacket.fLba = lba;
drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
@@ -635,9 +635,13 @@ bool NeFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endLb
/// @return if the catalog w rote the contents successfully.
bool NeFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, Bool isRsrcFork, _Input VoidPtr data, _Input SizeT sizeOfData, _Input const Char* forkName)
{
- if (sizeOfData > kNeFSForkDataSz)
+ if (sizeOfData > kNeFSForkDataSz ||
+ sizeOfData == 0)
return No;
+ auto buf = new UInt8[kNeFSForkDataSz];
+ rt_copy_memory(data, buf, sizeOfData);
+
auto drive = sMountpointInterface.A();
rt_copy_memory((VoidPtr) "fs/newfs-packet", drive.fPacket.fPacketMime,
@@ -671,31 +675,31 @@ bool NeFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, Bool i
if (forkDataIn->Flags != kNeFSFlagUnallocated &&
forkDataIn->Flags != kNeFSFlagDeleted &&
StringBuilder::Equals(forkDataIn->ForkName, forkName) &&
- StringBuilder::Equals(forkDataIn->CatalogName, catalog->Name))
+ StringBuilder::Equals(forkDataIn->CatalogName, catalog->Name) &&
+ forkDataIn->DataSize == sizeOfData)
{
// ===================================================== //
// Store the blob now.
// ===================================================== //
forkDataIn->Flags = kNeFSFlagCreated;
- forkDataIn->DataOffset = startFork - sizeof(NFS_FORK_STRUCT);
- forkDataIn->DataSize = sizeOfData;
- drive.fPacket.fPacketContent = data;
- drive.fPacket.fPacketSize = sizeOfData;
+ drive.fPacket.fPacketContent = buf;
+ drive.fPacket.fPacketSize = kNeFSForkDataSz;
drive.fPacket.fLba = forkDataIn->DataOffset;
kcout << "data offset: " << hex_number(forkDataIn->DataOffset) << endl;
drive.fOutput(&drive.fPacket);
- drive.fPacket.fPacketContent = &forkDataIn;
+ drive.fPacket.fPacketContent = forkDataIn;
drive.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
- drive.fPacket.fLba = startFork;
+ drive.fPacket.fLba = startFork - sizeof(NFS_FORK_STRUCT);
drive.fOutput(&drive.fPacket);
kcout << "wrote fork at offset: " << hex_number(forkDataIn->DataOffset) << endl;
+ kcout << "wrote fork at offset: " << hex_number(startFork - sizeof(NFS_FORK_STRUCT)) << endl;
delete catalog;
@@ -1042,4 +1046,4 @@ namespace Kernel::Detail
}
} // namespace Kernel::Detail
-#endif // ifdef __FSKIT_USE_NEWFS__
+#endif // ifdef __FSKIT_USE_NEFS__