diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-07-09 09:12:44 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-07-09 09:12:44 +0200 |
| commit | 3b6ee5a4323cfa1446af09626e5582c20f9254e8 (patch) | |
| tree | 2575dd7619b3e1eff57d632001e17e0e855ec53e | |
| parent | 002de3d50a300e49c0c2b9f21c6b7efce218ca15 (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.h | 1 | ||||
| -rw-r--r-- | public/frameworks/DiskImage.fwrk/src/DiskImage+EPM.cc | 9 |
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; |
