]> Cypherpunks repositories - dsc.git/commitdiff
DRY of integer options master
authorSergey Matveev <stargrave@stargrave.org>
Mon, 12 Jan 2026 11:31:10 +0000 (14:31 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Mon, 12 Jan 2026 11:31:10 +0000 (14:31 +0300)
jimlib/check-utils.tcl
schema/net/*/addr/*/check
schema/net/*/addr/*/prefixlen/check
schema/net/*/mtu/check
schema/ssh/port/check

index 464b668e77e66e261164c510b61c6786628da020efbf4dcc26a37b0745bf9a3a..28ffa5c0e2ebdabd7981189fbb39e96142a1ee56451fea94b8c40a9d070eec75 100644 (file)
@@ -11,3 +11,14 @@ proc parse-bool {v} {
     }
     return no
 }
+
+proc parse-int {v default} {
+    if {$v == ""} {
+        return $default
+    }
+    if {![string is integer -strict $v]} {
+        puts {invalid integer}
+        exit 1
+    }
+    return $v
+}
index 82f0f8e85d604444f94d60e5f2087cd5f712f930f478cd0aca92fd24f231c8aa..3866f08e7d1af638f5193ed5c90a80a4b195f0dc859e04fa1dd67d6bd8018316 100755 (executable)
@@ -13,7 +13,7 @@ if {[string first : $addr] == -1} {
     }
     set rv [list]
     foreach octet $octets {
-        if {[string is integer $octet] == 0} {
+        if {[string is integer -strict $octet] == 0} {
             puts stderr "non integer IPv4 octet"
             exit 1
         }
index 53a738ad3ee0456f6ce4193d4982b6c7c3912b63e83d8a47d3b0f9db6987050a..d49aee9957dfaf825c8f7c9199bbe82c1ca4a9b6d545af53e36307e415167e2f 100755 (executable)
@@ -7,14 +7,8 @@ if {[string first : $addr] == -1} {
     set maxlen 32
     set deflen 24
 }
-set prefixlen [read -nonewline stdin]
-if {$prefixlen == ""} {
-    set prefixlen $deflen
-}
-if {![string is integer -strict $prefixlen]} {
-    puts "invalid integer"
-    exit 1
-}
+package require check-utils
+set prefixlen [parse-int [read -nonewline stdin] $deflen]
 if {$prefixlen <= 0 || $prefixlen > $maxlen} {
     puts "not in range"
     exit 1
index 80917b01981c1e9422fccf6ed3a07bb4c8403b8f5de5e1eb88b72df249babca0..0643492450f48f42860e1bb8812e39361908d8bb850d44fb894c431a96eeea77 100755 (executable)
@@ -1,13 +1,7 @@
 #!/usr/bin/env jimsh
 
-set i [read -nonewline stdin]
-if {$i == ""} {
-    set i 1500
-}
-if {![string is integer -strict $i]} {
-    puts "invalid integer"
-    exit 1
-}
+package require check-utils
+set i [parse-int [read -nonewline stdin] 1500]
 if {$i <= 0 || $i > 65535} {
     puts "not in (0..65536) range"
     exit 1
index 45d5c59bd9feb45b8f5168905a4e596661cd63aaf5239543c5d7cf571403fa8b..41ceaa18707b619594c0d7ae95da4a2fc4df7a436cefd6b61d29325a93094e12 100755 (executable)
@@ -1,11 +1,5 @@
 #!/usr/bin/env jimsh
 
-set n [read -nonewline stdin]
-if {$n == ""} {
-    set n 22
-}
-if {![string is integer -strict $n]} {
-    puts "invalid integer"
-    exit 1
-}
+package require check-utils
+set n [parse-int [read -nonewline stdin] 22]
 puts $n