Support IEC base-2 prefixes
authorRichard Laager <rlaager@wiktel.com>
Sun, 10 Apr 2011 23:08:53 +0000 (18:08 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 19 Apr 2011 19:56:21 +0000 (12:56 -0700)
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
lib/libzfs/libzfs_util.c

index da1b9bc..f55b658 100644 (file)
@@ -1186,11 +1186,14 @@ str2shift(libzfs_handle_t *hdl, const char *buf)
        }
 
        /*
-        * We want to allow trailing 'b' characters for 'GB' or 'Mb'.  But don't
-        * allow 'BB' - that's just weird.
+        * Allow 'G' = 'GB' = 'GiB', case-insensitively.
+        * However, 'BB' and 'BiB' are disallowed.
         */
-       if (buf[1] == '\0' || (toupper(buf[1]) == 'B' && buf[2] == '\0' &&
-           toupper(buf[0]) != 'B'))
+       if (buf[1] == '\0' ||
+           (toupper(buf[0]) != 'B' &&
+            ((toupper(buf[1]) == 'B' && buf[2] == '\0') ||
+             (toupper(buf[1]) == 'I' && toupper(buf[2]) == 'B' &&
+              buf[3] == '\0'))))
                return (10*i);
 
        zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,