Posted to tcl by Stu at Wed Nov 30 14:50:10 GMT 2011view pretty
# Lgetrows -- # # Returns a list of lists matched # based on criteria. # # Arguments: # list # value # index # args # # Results: # list # proc netinfo::Lgetrows {list value index args} { set args [linsert $args 0 $value $index] set single [expr { [lsearch -glob $args {*\**}] == -1 && [lsearch -glob $args {*\?*}] == -1 && [lsearch -glob $args {*\[*\]*}] == -1 }] set rows {} foreach row $list { set ok 1 foreach {val ind} $args { if {[lsearch -glob [lindex $row $ind] $val] == -1} { set ok 0 break } } if {$ok} { if {$single} { return $row } lappend rows $row } } return $rows } ###