#!tcl

#
# cfg - extract network details of specified adapter from winipcfg.out
#

if {$argc != 1} {
    error "usage: cfg address"
}
set addr [lindex $argv 0]

set f [open "winipcfg.out" r]

set ip 0
set mask 0
set gw 0

set found 0

#
# search for the Ethernet Address
#
set pat $addr
while {[gets $f line] >= 0} {
    if [regexp $pat $line] {
        set found 1
        break
    }
}
if {$found == 0} {
    close $f
    echo Adapter $pat not found
    error "ERROR"
}

#
# get IP Address
#
set pat "IP Address" 
while {[gets $f line] >= 0} {
    if [regexp $pat $line] {
        set l [expr [llength $line]-1]
        set ip [lindex $line $l]
        break
    }
}

#
# get Mask
#
set pat "Subnet Mask" 
while {[gets $f line] >= 0} {
    if [regexp $pat $line] {
        set l [expr [llength $line]-1]
        set mask [lindex $line $l]
        break
    }
}

#
# get Gateway
#
set pat "Default Gateway" 
while {[gets $f line] >= 0} {
    if [regexp $pat $line] {
        set l [expr [llength $line]-1]
        set gw [lindex $line $l]
        if {$gw == ":"} {set gw 0.0.0.0}
        break
    }
}

#
# create netcfg.tmp
#

set out [open "netcfg.tmp" w]

puts -nonewline $out $ip
puts -nonewline $out $mask
puts -nonewline $out $gw

#
# search for second occurrence of the Ethernet Address (if any)
#
set ip 0
set mask 0
set gw 0

set found 0
set pat $addr
while {[gets $f line] >= 0} {
    if [regexp $pat $line] {
        set found 1
        break
    }
}
if {$found == 0} {
    puts -nonewline $out "0.0.0.0"
    puts -nonewline $out "0.0.0.0"
    puts -nonewline $out "0.0.0.0"
    close $f
    close $out
    error "OK"
}

#
# get IP Address
#
set pat "IP Address" 
while {[gets $f line] >= 0} {
    if [regexp $pat $line] {
        set l [expr [llength $line]-1]
        set ip [lindex $line $l]
        break
    }
}

#
# get Mask
#
set pat "Subnet Mask" 
while {[gets $f line] >= 0} {
    if [regexp $pat $line] {
        set l [expr [llength $line]-1]
        set mask [lindex $line $l]
        break
    }
}

#
# get Gateway
#
set pat "Default Gateway" 
while {[gets $f line] >= 0} {
    if [regexp $pat $line] {
        set l [expr [llength $line]-1]
        set gw [lindex $line $l]
        if {$gw == ":"} {set gw 0.0.0.0}
        break
    }
}

puts -nonewline $out $ip
puts -nonewline $out $mask
puts -nonewline $out $gw

close $out
close $f

echo OK
