#!/bin/sh
exec tclsh "$0" ${1+"$@"}
package require Tcldot
proc merge {g g2} {
foreach i [$g2 listnodes] {
set n [$g addnode [$i showname]]
$n setattributes [$i queryattributevalues [$i listattributes]]
}
foreach i [$g2 listedges] {
foreach {t h} [$i listnodes] {break}
set e [$g addedge [$t showname] [$h showname]]
$e setattributes [$i queryattributevalues [$i listattributes]]
}
}
set g [dotnew digraph]
if {$argc} {
foreach file $argv {
set f [open $file r]
if {[catch {dotread $f} g2]} {
puts stderr $g2
exit
}
merge $g $g2
close $f
}
} {
while {![catch {dotread stdin} g2]} {
merge $g $g2
}
if {![eof stdin]} {
puts stderr $g2
exit
}
}
$g write stdout CANON