From: David Griffith Date: Thu, 14 Apr 2022 02:47:26 +0000 (-0700) Subject: Doing unix2dos conversion in Snavig as a sed call. X-Git-Url: https://scope-eye.net/git/?a=commitdiff_plain;h=a1d580f31c32719430a6cb48e8e143e1347a6b0c;p=liskon_frotz.git Doing unix2dos conversion in Snavig as a sed call. --- diff --git a/src/misc/snavig.pl b/src/misc/snavig.pl index 054d53e..82f9ba5 100755 --- a/src/misc/snavig.pl +++ b/src/misc/snavig.pl @@ -51,6 +51,7 @@ GetOptions('usage|?' => \$options{usage}, my $shorten_filenames; my $transform_symbols; +my $dos_end; # To convert \n line endings to \r\n my $type = $options{type}; @@ -61,8 +62,9 @@ my @sources; 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 = (); @@ -79,8 +81,9 @@ print " Preparing files for $type.\n"; 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(); @@ -93,8 +96,7 @@ for my $arg (@ARGV) { } $target = pop @sources; -$sedfile = "$topdir/$target/$sedfile"; - +$sedfilepath = "$topdir/$target/$sedfile"; print " Copying sources from: "; my $source_dir_count = @sources; @@ -132,12 +134,12 @@ if ($shorten_filenames) { 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'}; @@ -147,9 +149,20 @@ if ($transform_symbols) { 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; @@ -163,16 +176,6 @@ sub usage { 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