From: Sergey Matveev Date: Mon, 12 Jan 2026 11:31:10 +0000 (+0300) Subject: DRY of integer options X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;p=dsc.git DRY of integer options --- diff --git a/jimlib/check-utils.tcl b/jimlib/check-utils.tcl index 464b668..28ffa5c 100644 --- a/jimlib/check-utils.tcl +++ b/jimlib/check-utils.tcl @@ -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 +} diff --git a/schema/net/*/addr/*/check b/schema/net/*/addr/*/check index 82f0f8e..3866f08 100755 --- a/schema/net/*/addr/*/check +++ b/schema/net/*/addr/*/check @@ -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 } diff --git a/schema/net/*/addr/*/prefixlen/check b/schema/net/*/addr/*/prefixlen/check index 53a738a..d49aee9 100755 --- a/schema/net/*/addr/*/prefixlen/check +++ b/schema/net/*/addr/*/prefixlen/check @@ -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 diff --git a/schema/net/*/mtu/check b/schema/net/*/mtu/check index 80917b0..0643492 100755 --- a/schema/net/*/mtu/check +++ b/schema/net/*/mtu/check @@ -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 diff --git a/schema/ssh/port/check b/schema/ssh/port/check index 45d5c59..41ceaa1 100755 --- a/schema/ssh/port/check +++ b/schema/ssh/port/check @@ -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