ubi_tools: enhance -s option to allow size multiplier to match mtd-utils
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 30 Jun 2013 00:47:45 +0000 (02:47 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 30 Jun 2013 00:47:45 +0000 (02:47 +0200)
Based on patch by Paul B. Henson <henson@acm.org>

function                                             old     new   delta
static.size_suffixes                                   -      32     +32
ubi_tools_main                                      1141    1148      +7

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
miscutils/ubi_tools.c

index 33059873a56c1052d8c796e361c43bb33c505246..d923f1c5a885838af4b93f4d5f688fa904451786 100644 (file)
@@ -92,6 +92,13 @@ static unsigned get_num_from_file(const char *path, unsigned max, const char *er
 int ubi_tools_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
 {
+       static const struct suffix_mult size_suffixes[] = {
+               { "KiB", 1024 },
+               { "MiB", 1024*1024 },
+               { "GiB", 1024*1024*1024 },
+               { "", 0 }
+       };
+
        unsigned opts;
        char *ubi_ctrl;
        int fd;
@@ -140,7 +147,7 @@ int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
 #define OPTION_t  (1 << 6)
 
        if (opts & OPTION_s)
-               size_bytes = xatoull(size_bytes_str);
+               size_bytes = xatoull_sfx(size_bytes_str, size_suffixes);
        argv += optind;
        ubi_ctrl = *argv++;