#!tcl

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

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

set f [open "winipcfg.out" r]

set ip 0
set mask 0
set gw 0

set found 0
set dhcp 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 DHCP Enabled
#
set pat "DHCP Enabled" 
while {[gets $f line] >= 0} {
    if [regexp $pat $line] {
        set l [expr [llength $line]-1]
        set dhcp [lindex $line $l]
        break
    }
}
if {$dhcp == "No"} {

    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} {
#
#       create netcfg.tmp
#

        set out [open "netcfg.tmp" w]

        puts -nonewline $out "0.0.0.0"
        puts -nonewline $out "0.0.0.0"
        puts -nonewline $out "0.0.0.0"

        close $out
        close $f
        error "OK"
    }
#
#   get DHCP Enabled
#
    set pat "DHCP Enabled" 
    while {[gets $f line] >= 0} {
        if [regexp $pat $line] {
            set l [expr [llength $line]-1]
            set dhcp [lindex $line $l]
            break
        }
    }

    if {$dhcp == "No"} {
        set out [open "netcfg.tmp" w]

        puts -nonewline $out "0.0.0.0"
        puts -nonewline $out "0.0.0.0"
        puts -nonewline $out "0.0.0.0"

        close $out
        close $f
        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
    }
}

#
# create netcfg.tmp
#

set out [open "netcfg.tmp" w]

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

close $out
close $f

echo OK
