api_delta_generator.tcl   [plain text]



proc main {argc argv} {
    if {2 != $argc} {
	puts stderr "syntax is: [info nameofexecutable] $::argv0 api.list gliDispatch.list"
	exit 1
    }
    
    set fd [open [lindex $argv 0] r]
    set data [read $fd]
    close $fd

    foreach line [split $data \n] {
	set gliname [lindex $line 3]
	if {"" eq $gliname} continue
	set a($gliname) 1
    }

    set fd [open [lindex $argv 1] r]
    set data [read $fd]
    close $fd

    set blist [split $data \n]

    foreach name $blist {
	if {"" eq $name} continue
	set b($name) 1
    }

    #Now find the differences between the 2 arrays.
    array set deltas {}

    foreach name [array names a] {
	if {[info exists b($name)]} {
	    set deltas($name) BOTH
	} else {
	    set deltas($name) [lindex $argv 0]
	}
    }
    
    foreach name [array names b] {
	if {![info exists a($name)]} {
	    set deltas($name) [lindex $argv 1]
	}
    }

    parray deltas
    
}
main $::argc $::argv