my $top = shift @ARGS;
my $target = shift @ARGS;
+my $tmptarg = $target;
+
+$tmptarg =~ s/\.[^\\\/\.]+$/.tmp/;
+
+my $runasm = 1;
+
+if ($ARGS[0] eq "norunasm")
+ {
+ $runasm = 0;
+ shift @ARGS;
+ }
+
+my $enabled = 0;
+
+$enabled = 1 if $ENV{FIPSCANISTERINTERNAL} eq "y";
+
+if ($enabled == 0 && $runasm)
+ {
+ system @ARGS;
+ exit $?
+ }
+
# Open symbol rename file.
open(IN, "$top/fips/fipssyms.h") || die "Can't open fipssyms.h";
my ($from, $to);
+#delete any temp file lying around
+
+unlink $tmptarg;
+
#rename target temporarily
-rename($target, "tmptarg.s") || die "Can't rename $target\n";
+rename($target, $tmptarg) || die "Can't rename $target";
#edit target
-open IN,"tmptarg.s";
-open OUT, ">$target";
+open(IN,$tmptarg) || die "Can't open temporary file";
+open(OUT, ">$target") || die "Can't open output file $target";
while (<IN>)
{
while (($from, $to) = each %edits)
{
- s/(\b)$from(\b)/$1$to$2/g;
+ s/(\b_*)$from(\b)/$1$to$2/g;
}
print OUT $_;
}
-# run assembler
-system @ARGS;
-my $rv = $?;
+close OUT;
-# restore target
-unlink $target;
-rename "tmptarg.s", $target;
+if ($runasm)
+ {
+ # run assembler
+ system @ARGS;
-die "Error executing assembler!" if $rv != 0;
+ my $rv = $?;
+ # restore target
+ unlink $target;
+ rename $tmptarg, $target;
+
+ die "Error executing assembler!" if $rv != 0;
+ }
+else
+ {
+ # Don't care about target
+ unlink $tmptarg;
+ }