eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q' if 0; # Usage: extract-eps [-a] [-l] [-n] [-fig] [ps-files ...] # --gnome # ... 1: always overwrite, 0: ask, -1: never overwrite $overwrite = 0; $listonly = 0; $add_figno = 0; $have_ps2epsi = 1; $tmpfile = ".tmpextract.eps"; $needhelp = 0; foreach $text (@ARGV) { last if (!($text=~/^-/)); if ($text=~/-a/) {$overwrite = 1} elsif ($text=~/-n/) {$overwrite = -1} elsif ($text=~/-l/) {$listonly = 1} elsif ($text=~/-fig/) {$add_figno = 1} elsif ($text=~/-[\?hH]/) {goto HELP} else {print "Unrecognized option $text \n"; $need_help = 1}; shift(@ARGV); } goto HELP if ($need_help); $epsfile_open = 0; $figno = 0; $oldfile = '000000'; while (<>) { if ($oldfile ne $ARGV) { $oldfile = $ARGV; $text = $listonly ? "Listing" : "Extracting" ; print "\n$text eps files ", (($ARGV ne "-") ? "from $oldfile " : ""), "...\n";} if (!$epsfile_open) { next if (!/^%%BeginDocument:/); ($epsfile) = /^%%BeginDocument:\s*(\S+)/; if ($epsfile=~/\//) {$epsfile =~ s/.*\///;} ++$figno; if ($add_figno) {$epsfile = "fig$figno-$epsfile"}; if ($listonly) { print " Found file $epsfile \n"; next; } if (-e $epsfile) { next if ($overwrite < 0); if ($overwrite == 0) { print " >>> File $epsfile already exists, overwrite? [=no] "; $text = ; $overwrite = 1 if ($text=~/^\s*Y/); $overwrite = -1 if ($text=~/^\s*N/); next if (!($text=~/^\s*y/i)); } } open (EPS,">$epsfile"); $epsfile_open = 1; } else { if (!/^%%EndDocument/) {print EPS "$_" ; next} close (EPS); print " Extracted file $epsfile"; $epsfile_open = 0; if (!$have_ps2epsi) {print "\n"; next}; eval `ps2epsi $epsfile $tmpfile`; if ($@) {$have_ps2epsi = 0} else {eval `mv $tmpfile $epsfile`; print " ... created bounding box"}; print "\n"; } } print "Done.\n\n"; if (!$have_ps2epsi) { print "NOTE: could not create bounding boxes with ps2epsi.\n\n"} exit(0); HELP: print "\nUsage: extract-eps [-a] [-n] [-l] [ps_files ...]\n"; print "\n -a : always overwrite existing eps files"; print "\n -n : never overwrite existing eps files"; print "\n -l : only list eps files, do not extract"; print "\n -fig : prefix extracted eps filenames with fig#"; print "\n ps_files : postscript taken from STDIN if ps_files not provided \n"; print "\n"; exit(0);