1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
#!/bin/sh
#
# Converts the cxref output files into a format that can be read into
# the DaVinci graph drawing program.
#
# (c) 1999 Andrew M. Bishop
#
exec perl -x $0 $*
#!perl
die "Usage: $0 cxref.include\n" if($#ARGV==-1);
open(FUNCTION,"<$ARGV[0]") || die "Cannot open $ARGV[0]\n";
%sysfunctions=();
%localfunctions=();
%function=();
while(<FUNCTION>)
{
chop;
($file,$function,$scope,@calls)=split(/ /);
$localfunctions{$function}=1;
$function{$function}="$file:$function";
}
print "[\n";
close(FUNCTION);
open(FUNCTION,"<$ARGV[0]") || die "Cannot open $ARGV[0]\n";
while(<FUNCTION>)
{
chop;
($file,$function,$scope,@calls)=split(/ /);
if($scope==1)
{
print "l(\"$file:$function\",n(\"\",[a(\"OBJECT\",\"$function\")],\n";
}
else
{
print "l(\"$file:$function\",n(\"\",[a(\"OBJECT\",\"$function\")],\n";
}
print "\t[\n";
foreach $call (@calls)
{
next if($call =~ /\&/);
if($call =~ /^%(.+)$/)
{
print "\te(\"\",[],r(\"$file:$1\")),\n";
}
elsif($function{$call})
{
print "\te(\"\",[],r(\"$function{$call}\")),\n";
}
else
{
print "\te(\"\",[],r(\"$call\")),\n";
$sysfunctions{$call}=1;
}
}
print "\t]))\n,\n";
}
foreach $function (keys(%sysfunctions))
{
print "l(\"$function\",n(\"\",[a(\"OBJECT\",\"$function\"),a(\"COLOR\",\"#808080\")],[]))\n,\n";
}
print "]\n";
close(FUNCTION);
|