diff options
Diffstat (limited to 'djgpp/fixpmain')
-rw-r--r-- | djgpp/fixpmain | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/djgpp/fixpmain b/djgpp/fixpmain new file mode 100644 index 0000000000..6db6555ecf --- /dev/null +++ b/djgpp/fixpmain @@ -0,0 +1,30 @@ +#!perl -w +# Fix perlmain.c under DOS (short & case insensitive filenames). +# Called from Makefile.aperl when needed. +# You don't need this when LFN=y. + +use Config; + +open (PERLM,"<perlmain.c") or die "Can't load perlmain.c: $!"; +open (MAKEFILE,"<makefile.pl") or die "Can't load makefile.pl: $!"; +undef $/; +$perlmain=<PERLM>; +$makefile=<MAKEFILE>; + +($_) = $makefile =~ /\bNAME\b.*=>\W*([\w\:]+)/; # extract module name +$badname=join ("__",map {lc substr ($_,0,8)} split /:+/); # dosify +$perlmain =~ s/^.*boot_$badname.*$//gm if $badname; # delete bad lines + +@exts=split (" ",$Config{known_extensions}); +for $realname (@exts,'DynaLoader') +{ + $dosname=substr (lc $realname,0,8); + $perlmain =~ s/boot_$dosname/boot_$realname/gm; + $perlmain =~ s/$dosname(::bootstrap)/$realname$1/gm; +} + +#DynaLoader is special +$perlmain =~ s/(DynaLoader:\:boot)strap/$1_DynaLoader/gm; + +open (PERLM,">perlmain.c") or die "Can't write perlmain.c: $!"; +print PERLM $perlmain; |