#!/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 # # 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