From 26dfc14229aae56afe74f23bdd550996b13e1934 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sat, 9 Jul 2016 11:12:28 -0500 Subject: [PATCH] Add support for K,M,G suffixs to FS sizes in oxfstool --- src/ox/fs/oxfstool.cpp | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/ox/fs/oxfstool.cpp b/src/ox/fs/oxfstool.cpp index 8917123a8..88600496c 100644 --- a/src/ox/fs/oxfstool.cpp +++ b/src/ox/fs/oxfstool.cpp @@ -37,16 +37,44 @@ char *loadFileBuff(const char *path, ::size_t *sizeOut = nullptr) { } } +ox::std::uint64_t bytes(const char *str) { + const auto size = ::strlen(str); + const auto lastChar = str[size-1]; + auto multiplier = 1; + char copy[size]; + memcpy(copy, str, size); + if (lastChar < '0' || lastChar > '9') { + copy[size-1] = 0; + switch (lastChar) { + case 'k': + case 'K': + multiplier = 1024; + break; + case 'm': + case 'M': + multiplier = 1024 * 1024; + break; + case 'g': + case 'G': + multiplier = 1024 * 1024 * 1024; + break; + default: + multiplier = -1; + } + } + return ((ox::std::uint64_t) ::atoi(copy)) * multiplier; +} + int format(int argc, char **args) { printf("Creating file system...\n"); auto err = 1; if (argc >= 5) { auto type = ox::std::atoi(args[2]); - auto size = ox::std::atoi(args[3]); + auto size = bytes(args[3]); auto path = args[4]; auto buff = (ox::std::uint8_t*) malloc(size); - printf("Size: %d bytes\n", size); + printf("Size: %llu bytes\n", size); printf("Type: %d\n", type); // format