/* ------------------------------------------- Copyright (C) 2025, Amlal El Mahrouss, all rights reserved. FILE: CommandLine.cc PURPOSE: DIUTIL CLI. ------------------------------------------- */ #include static const Char kDiskName[kDIDiskNameLen] = "Disk"; static SInt32 kDiskSectorSz = 512; static SizeT kDiskSz = gib_cast(4); static const Char kOutDisk[kDIOutNameLen] = "disk.eimg"; /// @brief Filesystem tool entrypoint. int main(int argc, char** argv) { for (SInt32 arg = 0; arg < argc; ++arg) { const Char* arg_s = argv[arg]; if (MmCmpMemory((VoidPtr)arg_s, (VoidPtr) "--disk-output-name", MmStrLen("--disk-output-name") == 0)) { if ((arg + 1) < argc) { MmCopyMemory((VoidPtr)kOutDisk, argv[arg + 1], kDIDiskNameLen); } } else if (MmCmpMemory((VoidPtr)arg_s, (VoidPtr) "--disk-output-size", MmStrLen("--disk-output-size") == 0)) { if ((arg + 1) < argc) { kDiskSz = StrMathToNumber(argv[arg + 1], nullptr, 10); } } else if (MmCmpMemory((VoidPtr)arg_s, (VoidPtr) "--disk-sector-size", MmStrLen("--disk-sector-size") == 0)) { if ((arg + 1) < argc) { kDiskSectorSz = StrMathToNumber(argv[arg + 1], nullptr, 10); } } else if (MmCmpMemory((VoidPtr)arg_s, (VoidPtr) "--disk-part-name", MmStrLen("--disk-part-name") == 0)) { if ((arg + 1) < argc) { MmCopyMemory((VoidPtr)kDiskName, argv[arg + 1], kDIDiskNameLen); } } } // create disk image. DI::DI_DISK_IMAGE img{}; img.disk_sz = kDiskSz; img.sector_sz = kDiskSectorSz; img.block_cnt = 0; MmCopyMemory((VoidPtr)img.disk_name, (VoidPtr)kDiskName, kDIDiskNameLen); MmCopyMemory((VoidPtr)img.out_name, (VoidPtr)kOutDisk, kDIDiskNameLen); // format disk image to explicit partition map. return DI::DIFormatPartitionEPM(img); }