summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-07-09 09:12:44 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-07-09 09:12:44 +0200
commit3b6ee5a4323cfa1446af09626e5582c20f9254e8 (patch)
tree2575dd7619b3e1eff57d632001e17e0e855ec53e
parent002de3d50a300e49c0c2b9f21c6b7efce218ca15 (diff)
feat: DiskImage.fwrk: Made `DIFormatPartitionEPM` cross platform.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
-rw-r--r--public/frameworks/DiskImage.fwrk/headers/DiskImage.h1
-rw-r--r--public/frameworks/DiskImage.fwrk/src/DiskImage+EPM.cc9
2 files changed, 6 insertions, 4 deletions
diff --git a/public/frameworks/DiskImage.fwrk/headers/DiskImage.h b/public/frameworks/DiskImage.fwrk/headers/DiskImage.h
index 53348f3e..4a18b079 100644
--- a/public/frameworks/DiskImage.fwrk/headers/DiskImage.h
+++ b/public/frameworks/DiskImage.fwrk/headers/DiskImage.h
@@ -39,6 +39,7 @@ struct DI_DISK_IMAGE {
SInt32 block_cnt = 0;
SizeT disk_sz = kDIMinDiskSz;
Char out_name[kDIOutNameLen] = kDIDefaultOutputName;
+ SInt32 fs_version = 0UL;
};
/// @brief Format with an EPM partition.
diff --git a/public/frameworks/DiskImage.fwrk/src/DiskImage+EPM.cc b/public/frameworks/DiskImage.fwrk/src/DiskImage+EPM.cc
index a1182e64..1291a3e1 100644
--- a/public/frameworks/DiskImage.fwrk/src/DiskImage+EPM.cc
+++ b/public/frameworks/DiskImage.fwrk/src/DiskImage+EPM.cc
@@ -17,7 +17,7 @@
/// @return Status code upon completion.
SInt32 DI::DIFormatPartitionEPM(struct DI_DISK_IMAGE& img) noexcept {
if (!img.sector_sz || (img.sector_sz % 512 != 0)) return kDIFailureStatus;
-
+ if (!img.fs_version) return kDIFailureStatus;
if (*img.out_name == 0 || *img.disk_name == 0) return kDIFailureStatus;
struct ::EPM_PART_BLOCK block {};
@@ -27,17 +27,18 @@ SInt32 DI::DIFormatPartitionEPM(struct DI_DISK_IMAGE& img) noexcept {
block.Version = kEPMRevisionBcd;
block.LbaStart = sizeof(struct ::EPM_PART_BLOCK);
block.LbaEnd = img.disk_sz - block.LbaStart;
- block.FsVersion = kNeFSVersionInteger;
+ block.FsVersion = img.fs_version;
::MmCopyMemory(block.Name, (VoidPtr) img.disk_name, ::MmStrLen(img.disk_name));
- ::MmCopyMemory(block.Magic, (VoidPtr) kEPMMagic86, ::MmStrLen(kEPMMagic86));
+
+ ::MmCopyMemory(block.Magic, (VoidPtr) kEPMMagic, ::MmStrLen(kEPMMagic));
IORef handle = IoOpenFile(img.out_name, nullptr);
if (!handle) return kDIFailureStatus;
::IoWriteFile(handle, (Char*) &block, sizeof(struct ::EPM_PART_BLOCK));
-
+
::IoCloseFile(handle);
handle = nullptr;