diff options
| author | Amlal EL Mahrouss <amlalelmahrouss@icloud.com> | 2024-08-10 16:47:14 +0200 |
|---|---|---|
| committer | Amlal EL Mahrouss <amlalelmahrouss@icloud.com> | 2024-08-10 16:47:14 +0200 |
| commit | 9a0184dae5723488daf16c86ee8a3741cd70f894 (patch) | |
| tree | c62a21c453853b78a012666a7235c5b300a856d2 /Kernel/Sources/FS | |
| parent | 8a2cab86eb8723b2f8b4f85c5d09d764003087a3 (diff) | |
[IMP] Many fixes inside kernel DLL, fixing filesystem now.
Signed-off-by: Amlal EL Mahrouss <amlalelmahrouss@icloud.com>
Diffstat (limited to 'Kernel/Sources/FS')
| -rw-r--r-- | Kernel/Sources/FS/NewFS.cxx | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/Kernel/Sources/FS/NewFS.cxx b/Kernel/Sources/FS/NewFS.cxx index 83c39e4b..a332576c 100644 --- a/Kernel/Sources/FS/NewFS.cxx +++ b/Kernel/Sources/FS/NewFS.cxx @@ -221,13 +221,13 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const char* name) /// @param flags the flags of the catalog. /// @param kind the catalog kind. /// @return catalog pointer. -_Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const char* name, +_Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name, _Input const Int32& flags, _Input const Int32& kind) { if (!sMountpointInterface.GetAddressOf(this->fDriveIndex)) return nullptr; - + Lba outLba = 0UL; /// a directory should have a slash in the end. @@ -610,10 +610,8 @@ bool NewFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endL /// @param catalog the catalog itself /// @param data the data. /// @return if the catalog w rote the contents successfully. -bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, voidPtr data, SizeT sizeOfData, _Input const char* forkName) +bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, voidPtr data, SizeT sizeOfData, _Input const Char* forkName) { - if (sizeOfData > catalog->DataForkSize) - return false; if (!sMountpointInterface.GetAddressOf(this->fDriveIndex)) return false; @@ -656,6 +654,11 @@ bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, voidP StringBuilder::Equals(forkData->ForkName, forkName) && StringBuilder::Equals(forkData->CatalogName, catalog->Name)) { + // ===================================================== // + // Store size of blob now. + // ===================================================== // + forkData->DataSize = sizeOfData; + drive->fPacket.fPacketContent = data; drive->fPacket.fPacketSize = sizeOfData; drive->fPacket.fLba = forkData->DataOffset; @@ -670,6 +673,11 @@ bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, voidP else if (auto catalog = this->GetCatalog(forkData->CatalogName); catalog == nullptr) { + // ===================================================== // + // Store size of blob now. + // ===================================================== // + forkData->DataSize = sizeOfData; + delete catalog; drive->fPacket.fPacketContent = data; @@ -680,6 +688,16 @@ bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, voidP drive->fOutput(&drive->fPacket); + forkData->Flags = kNewFSFlagCreated; + + drive->fPacket.fPacketContent = forkData; + drive->fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT); + drive->fPacket.fLba = startFork; + + drive->fOutput(&drive->fPacket); + + kcout << "newoskrnl: wrote fork at offset: " << hex_number(forkData->DataOffset) << endl; + delete forkData; return true; } |
