my $shorten_filenames;
my $transform_symbols;
+my $dos_end; # To convert \n line endings to \r\n
my $type = $options{type};
my @inputfiles;
my $sed = "sed";
-#my $sed = "gsed"; # You actually need GNU sed, so if you're on MacOS...
+#my $sed = "gsed"; # GNU sed required, so if you're on macOS, BSD, etc...
my $sedfile = "urbzig.sed";
+my $sedfilepath;
my $sedinplace = "-i.bak";
my %symbolmap = ();
if ($type eq "tops20") {
$shorten_filenames = 1;
$transform_symbols = 1;
+ $dos_end = 1;
} elsif ($type eq "dos") {
- # nothing special
+ $dos_end = 1;
} else {
print " Unknown target type $type.\n";
usage();
}
$target = pop @sources;
-$sedfile = "$topdir/$target/$sedfile";
-
+$sedfilepath = "$topdir/$target/$sedfile";
print " Copying sources from: ";
my $source_dir_count = @sources;
shorten_filenames($target, 6);
}
+open my $mapfile, '>', $sedfilepath;
+
if ($transform_symbols) {
- print " Transforming symbols...\n";
# Scan source code and build a symbol map.
+ print " Adding to " . $sedfile . " list of symbols to convert...\n";
%symbolmap = build_symbolmap($target, 6, 6);
-
- open my $mapfile, '>', $sedfile;
for my $k (reverse(sort(keys %symbolmap))) {
my $symbol = $symbolmap{$k}{'original'};
my $newsym = $symbolmap{$k}{'new'};
print $mapfile "s/$symbol/$newsym/g\n";
}
}
- transform_symbols($target);
}
+if ($dos_end) {
+ print " Adding to " . $sedfile . " line ending conversion of LF to CR LF...\n";
+ print $mapfile 's/$/\r/' . "\n";
+}
+
+print " Running conversion...\n";
+chdir $target;
+`$sed $sedinplace -f $sedfilepath *`;
+unlink glob("*.bak");
+chdir $topdir;
+
+
print " Done!\n";
exit;
exit;
}
-# Ensure that all symbols are changed.
-sub transform_symbols {
- my ($dir, @junk) = @_;
-
- chdir $dir;
- `$sed $sedinplace -f $sedfile *.c *h`;
- unlink glob("*.bak");
- chdir $topdir;
-}
-
# Identify unique symbol names and rewrite them if they are longer than
# $slimit characters to "A[0-9]{$slimit}". This does not rewrite the