diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-05-01 09:56:21 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-05-01 09:56:21 +0200 |
| commit | bf1629df18bbbbdb056f676d6c0b8c3a8119a8a2 (patch) | |
| tree | a448260c61dd594b6491f0d03557c0774e2987e3 | |
| parent | 2516d36ea71362d014907bf175ae88f3df09dbb3 (diff) | |
NewFS: format: FreeCatalog is now computed correctly.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
| -rw-r--r-- | Private/Source/AppMain.cxx | 2 | ||||
| -rw-r--r-- | Private/Source/FS/NewFS.cxx | 17 |
2 files changed, 17 insertions, 2 deletions
diff --git a/Private/Source/AppMain.cxx b/Private/Source/AppMain.cxx index d3f140d2..5618c574 100644 --- a/Private/Source/AppMain.cxx +++ b/Private/Source/AppMain.cxx @@ -67,7 +67,7 @@ class FilesystemAutomountProvider final { theFork.Kind = NewOS::kNewFSDataForkKind; const NewOS::Char metadataFolder[kNewFSSectorSz] = - "<p>Kind: folder</p>\r<p>Created by System.</p>\r"; + "<p>Kind: folder</p>\r<p>Created by: system</p>\r"; const NewOS::SizeT metadataSz = kNewFSSectorSz; auto catalogSystem = fNewFS->GetImpl()->GetCatalog("/System/"); diff --git a/Private/Source/FS/NewFS.cxx b/Private/Source/FS/NewFS.cxx index 3e247360..34a89d5d 100644 --- a/Private/Source/FS/NewFS.cxx +++ b/Private/Source/FS/NewFS.cxx @@ -405,7 +405,7 @@ bool NewFSParser::Format(_Input _Output DriveTrait* drive) { partBlock->CatalogCount = sectorCount / sizeof(NewCatalog); partBlock->SectorCount = sectorCount; partBlock->DiskSize = diskSize; - partBlock->FreeCatalog = partBlock->StartCatalog; + partBlock->FreeCatalog = sectorCount / sizeof(NewCatalog); drive->fPacket.fPacketContent = sectorBuf; drive->fPacket.fPacketSize = kNewFSSectorSz; @@ -621,6 +621,21 @@ Boolean NewFSParser::RemoveCatalog(_Input const Char* catalogName) { drive->fOutput(&drive->fPacket); // send packet. + Char partitonBlockBuf[sizeof(NewPartitionBlock)] = { 0 }; + + drive->fPacket.fLba = kNewFSAddressAsLba; + drive->fPacket.fPacketContent = partitonBlockBuf; + drive->fPacket.fPacketSize = sizeof(NewPartitionBlock); + + drive->fInput(&drive->fPacket); + + NewPartitionBlock* partBlock = reinterpret_cast<NewPartitionBlock*>(partitonBlockBuf); + + ++partBlock->FreeCatalog; + --partBlock->CatalogCount; + + drive->fOutput(&drive->fPacket); + return true; } |
