| 1 | #!perl -w |
| 2 | # Fix perlmain.c under DOS (short & case insensitive filenames). |
| 3 | # Called from Makefile.aperl when needed. |
| 4 | # You don't need this when LFN=y. |
| 5 | |
| 6 | use Config; |
| 7 | |
| 8 | open (PERLM,"<perlmain.c") or die "Can't load perlmain.c: $!"; |
| 9 | open (MAKEFILE,"<makefile.pl") or die "Can't load makefile.pl: $!"; |
| 10 | undef $/; |
| 11 | $perlmain=<PERLM>; |
| 12 | $makefile=<MAKEFILE>; |
| 13 | |
| 14 | ($_) = $makefile =~ /\bNAME\b.*=>\W*([\w\:]+)/; # extract module name |
| 15 | $badname=join ("__",map {lc substr ($_,0,8)} split /:+/); # dosify |
| 16 | $perlmain =~ s/^.*boot_$badname.*$//gm if $badname; # delete bad lines |
| 17 | |
| 18 | @exts=('DynaLoader',split (" ",$Config{known_extensions})); |
| 19 | for $realname (@exts) |
| 20 | { |
| 21 | $dosname=join ("__",map {lc substr ($_,0,8)} split /\//,$realname); |
| 22 | $realname =~ s!/!__!g; |
| 23 | $perlmain =~ s/\bboot_$dosname\b/boot_$realname/gm; |
| 24 | $dosname =~ s/__/::/; |
| 25 | $realname =~ s/__/::/; |
| 26 | $perlmain =~ s/\b$dosname(::bootstrap)/$realname$1/gm; |
| 27 | } |
| 28 | |
| 29 | #DynaLoader is special |
| 30 | $perlmain =~ s/(DynaLoader:\:boot)strap/$1_DynaLoader/gm; |
| 31 | |
| 32 | open (PERLM,">perlmain.c") or die "Can't write perlmain.c: $!"; |
| 33 | print PERLM $perlmain; |