1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #!/bin/sh
- # next line is a comment in tcl \
- exec tclsh "$0" ${1+"$@"}
- package require Tcldot
- # gcat f1 [f2 ... ]
- #
- # merge a number of digraphs into one and output to stdout
- #
- # John Ellson <[email protected]>
- #
- # merge graph $g2 into $g
- 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
|