changeset 731:cf0f18d3d41b

farray.sh: more thorough checks when numbers are octal
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 07 Oct 2024 13:26:25 +0200
parents 8f1583faf9ea
children d92e7203a14d
files share/local-bsdtools/farray.sh tests/farray-misc.t
diffstat 2 files changed, 18 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/share/local-bsdtools/farray.sh	Mon Oct 07 12:57:29 2024 +0200
+++ b/share/local-bsdtools/farray.sh	Mon Oct 07 13:26:25 2024 +0200
@@ -140,24 +140,24 @@
     case "$1" in
         '')
             # empty is not allowed
-            return 1
-            ;;
+            return 1;;
         +|-)
             # just the sign is not allowed
-            return 1
-            ;;
+            return 1;;
         *)
             # FALL THROUGH
             ;;
     esac
     # here we can trim the optional sign safely
     case "${1#[-+]}" in
+        0*[!01234567]*)
+            # non-octal
+            return 1;;
         *[!0123456789]*)
-            return 1
-            ;;
+            # non-decimal
+            return 1;;
         *)
-            return 0
-            ;;
+            return 0;;
     esac
 }
 
--- a/tests/farray-misc.t	Mon Oct 07 12:57:29 2024 +0200
+++ b/tests/farray-misc.t	Mon Oct 07 13:26:25 2024 +0200
@@ -25,9 +25,10 @@
 
 Octal
 
-  $ _farr_is_decimal_number 012345678901234567890
-  $ _farr_is_decimal_number -012345678901234567890
-  $ _farr_is_decimal_number +12345678901234567890
+  $ _farr_is_decimal_number 01234567012345670
+  $ _farr_is_decimal_number -01234567012345670
+  $ _farr_is_decimal_number +01234567012345670
+
 
 Invalid
 -------
@@ -48,6 +49,12 @@
   [1]
   $ _farr_is_decimal_number 0123456789abcdef
   [1]
+  $ _farr_is_decimal_number 01234567890
+  [1]
+  $ _farr_is_decimal_number -01234567890
+  [1]
+  $ _farr_is_decimal_number +01234567890
+  [1]
 
 
 Index Checks