This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: Analysis of problems with mixed encoding case insensitive matches in regex engine.
[perl5.git] / djgpp / fixpmain
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;