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
}
###