summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Private/Source/AppMain.cxx2
-rw-r--r--Private/Source/FS/NewFS.cxx17
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;
}