diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-03-25 20:07:48 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-03-25 20:13:14 +0100 |
| commit | ec11d85709965521ba7151fa18d0f71ea9c2eae2 (patch) | |
| tree | 3539bebe985ed55af7e874323cbdd684d7ff7cb2 /public/tools/diutil/src/CommandLine.cc | |
| parent | 0ead895f52d24dad009f738037a7795d4e3d840a (diff) | |
cli(diutil): moved CommandLine.cc to src/
ahci(generic): set err_global_get() when probing or command fails, use
HbaMemRef when refering to HbaMem*
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'public/tools/diutil/src/CommandLine.cc')
| -rw-r--r-- | public/tools/diutil/src/CommandLine.cc | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/public/tools/diutil/src/CommandLine.cc b/public/tools/diutil/src/CommandLine.cc new file mode 100644 index 00000000..c0388611 --- /dev/null +++ b/public/tools/diutil/src/CommandLine.cc @@ -0,0 +1,68 @@ +/* ------------------------------------------- + + Copyright (C) 2025, Amlal EL Mahrouss, all rights reserved. + + FILE: CommandLine.cc + PURPOSE: DIUTIL CLI. + + ------------------------------------------- */ + +#include <DiskImage.fwrk/headers/DiskImage.h> + +static const Char kDiskName[kDIDiskNameLen] = "Disk"; +static SInt32 kDiskSectorSz = 512; +static const SInt32 kDiskBlockCnt = 1; +static SizeT kDiskSz = gib_cast(4); +static const Char kOutDisk[kDIOutNameLen] = "disk.eimg"; + +/// @brief Filesystem tool entrypoint. +int main(int argc, char** argv) +{ + for (SizeT 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 = MathToNumber(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 = MathToNumber(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_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. + return DIFormatPartitionEPM(img); +}
\ No newline at end of file |
