diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-10-03 13:35:14 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-10-03 18:03:09 +0200 |
commit | 4a44d7bbc68ff3e363e6c166a588474cbd6c20f8 (patch) | |
tree | 05527f5ad13ba290127c5db1e516a3298b7dda1c | |
parent | 882383a9aa5fbeef6f29d359a786a6db7c9e03db (diff) | |
download | guix-4a44d7bbc68ff3e363e6c166a588474cbd6c20f8.tar.gz |
ui: Recognize the same size units as Coreutils.
* guix/ui.scm (size->number): Add a bunch of large units. Recognize one-letter unit names. Change "KB" to "kB". * tests/ui.scm ("size->number, 1T"): New test. * doc/guix.texi (Invoking guix gc): Add cross-reference to "Block size" in the Coreutils manual. (Invoking guix system): Likewise.
-rw-r--r-- | doc/guix.texi | 7 | ||||
-rw-r--r-- | guix/ui.scm | 18 | ||||
-rw-r--r-- | tests/ui.scm | 4 |
3 files changed, 21 insertions, 8 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 57806cebe1..5e8f8e6eb5 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1142,7 +1142,8 @@ specified. When @var{min} is given, stop once @var{min} bytes have been collected. @var{min} may be a number of bytes, or it may include a unit as a -suffix, such as @code{MiB} for mebibytes and @code{GB} for gigabytes. +suffix, such as @code{MiB} for mebibytes and @code{GB} for gigabytes +(@pxref{Block size, size specifications,, coreutils, GNU Coreutils}). When @var{min} is omitted, collect all the garbage. @@ -3822,8 +3823,8 @@ This works as per @command{guix build} (@pxref{Invoking guix build}). @item --image-size=@var{size} For the @code{vm-image} and @code{disk-image} actions, create an image of the given @var{size}. @var{size} may be a number of bytes, or it may -include a unit as a suffix, such as @code{MiB} for mebibytes and -@code{GB} for gigabytes. +include a unit as a suffix (@pxref{Block size, size specifications,, +coreutils, GNU Coreutils}). @end table Note that all the actions above, except @code{build} and @code{init}, diff --git a/guix/ui.scm b/guix/ui.scm index 531d922ad9..04345d4770 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -189,14 +189,22 @@ interpreted." ((compose inexact->exact round) (* num (match unit - ("KiB" (expt 2 10)) - ("MiB" (expt 2 20)) - ("GiB" (expt 2 30)) - ("TiB" (expt 2 40)) - ("KB" (expt 10 3)) + ((or "KiB" "K" "k") (expt 2 10)) + ((or "MiB" "M") (expt 2 20)) + ((or "GiB" "G") (expt 2 30)) + ((or "TiB" "T") (expt 2 40)) + ((or "PiB" "P") (expt 2 50)) + ((or "EiB" "E") (expt 2 60)) + ((or "ZiB" "Z") (expt 2 70)) + ((or "YiB" "Y") (expt 2 80)) + ("kB" (expt 10 3)) ("MB" (expt 10 6)) ("GB" (expt 10 9)) ("TB" (expt 10 12)) + ("PB" (expt 10 15)) + ("EB" (expt 10 18)) + ("ZB" (expt 10 21)) + ("YB" (expt 10 24)) ("" 1) (_ (leave (_ "unknown unit: ~a~%") unit))))))) diff --git a/tests/ui.scm b/tests/ui.scm index 7cc02649e1..db90cdd479 100644 --- a/tests/ui.scm +++ b/tests/ui.scm @@ -189,6 +189,10 @@ Second line" 24)) (inexact->exact (round (* 1.2 (expt 2 30)))) (size->number "1.2GiB")) +(test-equal "size->number, 1T" + (expt 2 40) + (size->number "1T")) + (test-assert "size->number, invalid unit" (catch 'quit (lambda () |