#!/usr/bin/perl # drawgraph.pl - Draw Feistel network for keyfile - Don Yang (uguu.org) # # 01/06/05 use strict; my ($Nanoca, $GhostScript); $Nanoca = './nanoca'; $GhostScript = 'gs'; sub ChangeExt { my ($f, $e) = @_; return ($f =~ /^(.*?)(\.[^.]+)$/) ? "$1.$e" : "$f.$e"; } sub Process { my ($cmd, $key, $ps, $ppm, $png); local (*FILE); foreach $key (@ARGV) { $ps = ChangeExt($key, 'ps'); $ppm = ChangeExt($ps, 'ppm'); $png = ChangeExt($ps, 'png'); $cmd = "$Nanoca $key -g $ps"; print $cmd, "\n"; system $cmd; unless( -e $ps ) { die "\n$Nanoca did not produce $ps\n"; } open FILE, ">> $ps" or die $!; print FILE "quit\n"; close FILE; $cmd = "$GhostScript -q -sDEVICE=ppmraw -sOutputFile=$ppm -r200x200 ". "-dNOPAUSE -dTextAlphaBits=4 -dGraphicsAlphaBits=4 $ps"; print $cmd, "\n"; system $cmd; unless( -e $ppm ) { die "\n$GhostScript did not produce $ppm"; } $cmd = "pnmtopng -compression 9 $ppm > $png"; print $cmd, "\n"; system $cmd; } } die "$0 [...]\n" unless( $#ARGV > -1 ); Process();