From 1e719bfe486d2002b950f5c4deda373fd95d2f87 Mon Sep 17 00:00:00 2001 From: Josip Rodin Date: Mon, 14 Sep 2009 00:11:14 +0200 Subject: [PATCH] zamijenio polustrgani oneliner s dva tuceta redaka cisto da se vidi da se to i u Tclu moze napraviti :) --- linux/exec.tcl | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/linux/exec.tcl b/linux/exec.tcl index 762ee9d..33e89c4 100755 --- a/linux/exec.tcl +++ b/linux/exec.tcl @@ -796,24 +796,33 @@ proc deployCfg {} { } } - - # TODO Ovo bi trebalo elegantnije rjesiti. - # Naredba pokusava utvrditi da li vec postoji bridge pod tim imenom, - # ako ima onda ga netreba ponovo stvarati nego samo doda interface. - # - # Problem je u nacinu kako exec radi. - # Ovdje ustvari ispadne $result="child process exited abnormally" za - # slucaj kada ne nadje rezultat natrag. - # Kad nadje vrijednost, vraca u obliku: - # invalid command name "ime_bridgea" - - set status [catch { [exec brctl show | grep -v interfaces | awk {{ print $1 }} | grep $bridge] } result] - - if { $result == "invalid command name \"$bridge\""} { + # Tcl pipe, string handling == the suck. + set bridgelist_p [open "| brctl show"] + set bridgelist_s [read $bridgelist_p] + if { [catch {close $bridgelist_p} err] } { + puts "brctl show failed: $err" + } + set bridgelist [split $bridgelist_s \n] + set bridgefound false + set l 0 + foreach bridge_line $bridgelist { + set l [expr $l+1] + if { $l == 1 || [string length $bridge_line] == 0 } { + continue + } + puts "$l: $bridge_line" + set nasli [string range $bridge_line 0 [expr [string length $bridge]-1] ] + if { $bridge == $nasli } { + set bridgefound true + break + } + } + + if { $bridgefound == true } { puts "\nBridge $bridge (L2 hub emulation) already exists." } else { - puts "\nCreating bridge $bridge (L2 hub emulation)" - nexec brctl addbr $bridge + puts "\nCreating bridge $bridge (L2 hub emulation)" + nexec brctl addbr $bridge lappend bridges $bridge } -- 2.39.5