| 11 |  | my $nprocs = 1; | 
| 12 |  | # rtrace options and the associated number of arguments | 
| 13 |  | my %rtraceC = ('-dt',1, '-dc',1, '-dj',1, '-ds',1, '-dr',1, '-dp',1, | 
| 14 | < | '-ss',1, '-st',1, '-e',1, '-am',1, | 
| 14 | > | '-ss',1, '-st',1, '-e',1, '-am',1, '-P',1, '-PP',1, | 
| 15 |  | '-ab',1, '-af',1, '-ai',1, '-aI',1, '-ae',1, '-aE',1, | 
| 16 |  | '-av',3, '-aw',1, '-aa',1, '-ar',1, '-ad',1, '-as',1, | 
| 17 | < | '-me',3, '-ma',3, '-mg',1, '-ms',1, '-lr',1, '-lw',1); | 
| 17 | > | '-me',3, '-ma',3, '-mg',1, '-ms',1, '-lr',1, '-lw',1, | 
| 18 | > | '-ap',2, '-am',1, '-ac',1, '-aC',1); | 
| 19 |  | # boolean rtrace options | 
| 20 |  | my @boolO = ('-w', '-bv', '-dv', '-i', '-u'); | 
| 21 |  | # view options and the associated number of arguments | 
| 29 |  | '-aa .2 -ar 64 -ad 512 -as 128 -lr 7 -lw 1e-03'); | 
| 30 |  | my @vwraysA = ('vwrays', '-ff', '-pj', '.67'); | 
| 31 |  | my @vwrightA = ('vwright', '-vtv'); | 
| 32 | < | my @rpictA = ('rpict'); | 
| 32 | > | my @rpictA = ('rpict', '-ps', '1'); | 
| 33 |  | my $outpatt = '^-o[vrxlLRXnNsmM]+'; | 
| 34 |  | my $refDepth = ""; | 
| 35 |  | my $irrad = 0; | 
| 36 | + | my $persist = 0; | 
| 37 |  | my $outlyr; | 
| 38 |  | my $outdir; | 
| 39 |  | my $outpic; | 
| 42 |  | while ($#ARGV >= 0 && "$ARGV[0]" =~ /^[-\@]/) { | 
| 43 |  | # Check for file inclusion | 
| 44 |  | if ("$ARGV[0]" =~ /^\@/) { | 
| 45 | < | open my $handle, '<', substr($ARGV[0], 1); | 
| 45 | > | open my $handle, '<', substr($ARGV[0], 1) or die "No file for $ARGV[0]\n"; | 
| 46 |  | shift @ARGV; | 
| 47 |  | chomp(my @args = <$handle>); | 
| 48 |  | close $handle; | 
| 77 |  | } | 
| 78 |  | # Check rtrace options | 
| 79 |  | if (defined $rtraceC{$ARGV[0]}) { | 
| 80 | + | $persist ||= ("$ARGV[0]" =~ /^-PP?$/); | 
| 81 |  | push @rtraceA, $ARGV[0]; | 
| 82 |  | push @rpictA, shift(@ARGV); | 
| 83 |  | for (my $i = $rtraceC{$rpictA[-1]}; $i-- > 0; ) { | 
| 127 |  | } | 
| 128 |  | ##################################################################### | 
| 129 |  | ##### May as well run rpict? | 
| 130 | < | if ($nprocs == 1 && !defined($outdir)) { | 
| 130 | > | if ($nprocs == 1 && $persist == 0 && !defined($outdir)) { | 
| 131 |  | push(@rpictA, $ARGV[0]) if ($#ARGV == 0); | 
| 132 |  | exec @rpictA ; | 
| 133 |  | } | 
| 189 |  | foreach my $oval (split //, $outlyr) { | 
| 190 |  | die "Duplicate or unsupported type '$oval' in -o$outlyr\n" | 
| 191 |  | if (!defined $rtoutC{$oval}); | 
| 192 | + | my $outfile = "$outdir/$rtoutC{$oval}"; | 
| 193 | + | die "File '$outfile' already exists\n" if (-e $outfile); | 
| 194 |  | my ($otyp) = ($rtoutC{$oval} =~ /(\.[^.]+)$/); | 
| 195 |  | push @rsplitA, $rcodeC{$otyp}[0]; | 
| 196 | < | push @rsplitA, qq{'$rcodeC{$otyp}[1] > "$outdir/$rtoutC{$oval}"'}; | 
| 196 | > | push @rsplitA, qq{'$rcodeC{$otyp}[1] > "$outfile"'}; | 
| 197 |  | delete $rtoutC{$oval}; | 
| 198 |  | } | 
| 199 |  | # call rtrace + rsplit |