From fa99c4bbc7acdb8def9ce14a05aacb73f99fe3b1 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 23 Feb 2020 12:42:58 +0100 Subject: ui: (size->number "1.M") is correctly parsed. Reported by Pierre Neidhardt . * guix/ui.scm (size->number)[unit-pos]: Add #\. to CHAR-SET:DIGIT. * tests/ui.scm ("size->number, 1.M"): New test. --- guix/ui.scm | 3 ++- tests/ui.scm | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/guix/ui.scm b/guix/ui.scm index dce97fb7b9..db932ecacb 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -591,7 +591,8 @@ nicely." \"1MiB\", to a number of bytes. Raise an error if STR could not be interpreted." (define unit-pos - (string-rindex str char-set:digit)) + (string-rindex str + (char-set-union (char-set #\.) char-set:digit))) (define unit (and unit-pos (substring str (+ 1 unit-pos)))) diff --git a/tests/ui.scm b/tests/ui.scm index d8573e88d8..05eace6721 100644 --- a/tests/ui.scm +++ b/tests/ui.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -227,6 +227,10 @@ Second line" 24)) (expt 2 40) (size->number "1T")) +(test-equal "size->number, 1.M" + (expt 2 20) + (size->number "1.M")) + (test-assert "size->number, invalid unit" (catch 'quit (lambda () -- cgit v1.2.3