Posted to tcl by Stu at Wed Nov 30 14:50:10 GMT 2011view raw
- # 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
- }
- ###