summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerl 5 Porters <perl5-porters@africa.nicoh.com>1996-02-29 12:28:05 +0000
committerCharles Bailey <bailey@genetics.upenn.edu>1996-02-29 12:28:05 +0000
commitb9f71c63bb929cfc8deebcfdbfb465cf5e865a2d (patch)
treeb40a0e23fa095878473509503a297738613dcdca
parent8ae5b8029d7709b8f5f04de7386460961c8429b4 (diff)
downloadperl-b9f71c63bb929cfc8deebcfdbfb465cf5e865a2d.tar.gz
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.
-rw-r--r--vms/gen_shrfls.pl19
1 files changed, 13 insertions, 6 deletions
diff --git a/vms/gen_shrfls.pl b/vms/gen_shrfls.pl
index 56ebc4b7da..256cdb5172 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 (<CPP>) {
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 $_ = <CPP>;
}
print "vmsish.h>> $_" if $debug > 2;
@@ -199,8 +199,8 @@ LINE: while (<CPP>) {
}
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 $_ = <CPP>;
}
print $_ if $debug > 3;
@@ -219,11 +219,19 @@ LINE: while (<CPP>) {
}
}
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 (<DATA>) {
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