summaryrefslogtreecommitdiffhomepage
path: root/public/tools/diutil/src
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-03-25 20:07:48 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-03-25 20:13:14 +0100
commitec11d85709965521ba7151fa18d0f71ea9c2eae2 (patch)
tree3539bebe985ed55af7e874323cbdd684d7ff7cb2 /public/tools/diutil/src
parent0ead895f52d24dad009f738037a7795d4e3d840a (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')
-rw-r--r--public/tools/diutil/src/CommandLine.cc68
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