From: Perl 5 Porters Date: Thu, 29 Feb 1996 12:28:05 +0000 (+0000) Subject: perl 5.002_01: vms/gen_shrfls.pl X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=b9f71c63bb929cfc8deebcfdbfb465cf5e865a2d;p=p5sagit%2Fp5-mst-13.2.git perl 5.002_01: vms/gen_shrfls.pl Correct latent bug in scan_func, detect EMBED and apply to "odd" vars (not declared in perl.h), and optimize main loop a bit. --- diff --git a/vms/gen_shrfls.pl b/vms/gen_shrfls.pl index 56ebc4b..256cdb5 100644 --- a/vms/gen_shrfls.pl +++ b/vms/gen_shrfls.pl @@ -156,7 +156,7 @@ sub scan_func { my($line) = @_; print "\tchecking for global routine\n" if $debug > 1; - if ( /(\w+)\s+\(/ ) { + if ( $line =~ /(\w+)\s+\(/ ) { print "\troutine name is \\$1\\\n" if $debug > 1; if ($1 eq 'main' || $1 eq 'perl_init_ext') { print "\tskipped\n" if $debug > 1; @@ -177,8 +177,8 @@ LINE: while () { while (/^#.*vmsish\.h/i .. /^#.*perl\.h/i) { while (/__VMS_PROTOTYPES__/i .. /__VMS_SEPYTOTORP__/i) { print "vms_proto>> $_" if $debug > 2; - &scan_func($_); - if (/^EXT/) { &scan_var($_); } + if (/^EXT/) { &scan_var($_); } + else { &scan_func($_); } last LINE unless $_ = ; } print "vmsish.h>> $_" if $debug > 2; @@ -199,8 +199,8 @@ LINE: while () { } while (/^#.*proto\.h/i .. /^#.*perl\.h/i) { print "proto.h>> $_" if $debug > 2; - &scan_func($_); - if (/^EXT/) { &scan_var($_); } + if (/^EXT/) { &scan_var($_); } + else { &scan_func($_); } last LINE unless $_ = ; } print $_ if $debug > 3; @@ -219,11 +219,19 @@ LINE: while () { } } close CPP; + + +# Kluge to determine whether we need to add EMBED prefix to +# symbols read from local list. init_os_extras() is a VMS- +# specific function whose Perl_ prefix is added in vmsish.h +# if EMBED is #defined. +$embed = exists($fcns{'Perl_init_os_extras'}) ? 'Perl_' : ''; while () { next if /^#/; s/\s+#.*\n//; next if /^\s*$/; ($key,$array) = split('=',$_); + $key = "$embed$key"; print "Adding $key to \%$array list\n" if $debug > 1; ${$array}{$key}++; } @@ -344,7 +352,6 @@ exec "\$ \@$drvrname" if $isvax; __END__ # Oddball cases, so we can keep the perl.h scan above simple -error=vars # declared in perl.h only when DOINIT defined by INTERN.h rcsid=vars # declared in perl.c regarglen=vars # declared in regcomp.h regdummy=vars # declared in regcomp.h