From: Nicholas Clark Date: Tue, 10 Jul 2001 23:17:43 +0000 (+0100) Subject: ExtUtils::Constant (was Re: funny numconvert test in perl@11006 (was Re: report on... X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=d7f976323338cab013e8db06a1f8dfebaaa85ac1;p=p5sagit%2Fp5-mst-13.2.git ExtUtils::Constant (was Re: funny numconvert test in perl@11006 (was Re: report on BS2000 wit h perl@11006)) Message-ID: <20010710231742.B59620@plum.flirble.org> p4raw-id: //depot/perl@11269 --- diff --git a/lib/ExtUtils.t b/lib/ExtUtils.t index 3c76657..1b7dabc 100644 --- a/lib/ExtUtils.t +++ b/lib/ExtUtils.t @@ -7,7 +7,7 @@ BEGIN { @INC = '../lib'; } -use warnings; +# use warnings; use strict; use ExtUtils::MakeMaker; use ExtUtils::Constant qw (constant_types C_constant XS_constant autoload); @@ -15,7 +15,8 @@ use Config; use File::Spec::Functions; use File::Spec; # Because were are going to be changing directory before running Makefile.PL -my $perl = File::Spec->rel2abs( $^X ); +my $perl; +$perl = rel2abs( $^X ) unless $] < 5.006; # Hack. Until 5.00503 has rel2abs # ExtUtils::Constant::C_constant uses $^X inside a comment, and we want to # compare output to ensure that it is the same. We were probably run as ./perl # whereas we will run the child with the full path in $perl. So make $^X for @@ -45,7 +46,7 @@ my $package = "ExtTest"; # Test the code that generates 1 and 2 letter name comparisons. my %compass = ( -N => 0, NE => 45, E => 90, SE => 135, S => 180, SW => 225, W => 270, NW => 315 +N => 0, 'NE' => 45, E => 90, SE => 135, S => 180, SW => 225, W => 270, NW => 315 ); my $parent_rfc1149 = @@ -133,12 +134,14 @@ print FH "use $];\n"; print FH <<'EOT'; use strict; -use warnings; +EOT +printf FH "use warnings;\n" unless $] < 5.006; +print FH <<'EOT'; use Carp; require Exporter; require DynaLoader; -use vars qw ($VERSION @ISA @EXPORT_OK); +use vars qw ($VERSION @ISA @EXPORT_OK $AUTOLOAD); $VERSION = '0.01'; @ISA = qw(Exporter DynaLoader); @@ -292,7 +295,7 @@ my %compass = ( EOT while (my ($point, $bearing) = each %compass) { - print FH "$point => $bearing, " + print FH "'$point' => $bearing, " } print FH <<'EOT'; diff --git a/lib/ExtUtils/Constant.pm b/lib/ExtUtils/Constant.pm index 74c95e1..84e00ca 100644 --- a/lib/ExtUtils/Constant.pm +++ b/lib/ExtUtils/Constant.pm @@ -1,6 +1,6 @@ package ExtUtils::Constant; use vars qw (@ISA $VERSION %XS_Constant %XS_TypeSet @EXPORT_OK %EXPORT_TAGS); -$VERSION = '0.08'; +$VERSION = '0.09'; =head1 NAME @@ -92,8 +92,9 @@ C. The value of the macro is not needed. =cut -require 5.006; # I think, for [:cntrl:] in REGEXP -use warnings; +if ($] >= 5.006) { + eval "use warnings; 1" or die $@; +} use strict; use Carp; @@ -154,8 +155,15 @@ sub C_stringify { s/\t/\\t/g; s/\f/\\f/g; s/\a/\\a/g; - s/([[:cntrl:]])/sprintf "\\%03o", ord $1/ge; - s/\177/\\177/g; # DEL doesn't seem to be a [:cntrl:] + unless ($] < 5.006) { + # This will elict a warning on 5.005_03 about [: :] being reserved unless + # I cheat + my $cheat = '([[:^print:]])'; + s/$cheat/sprintf "\\%03o", ord $1/ge; + } else { + require POSIX; + s/([^A-Za-z0-9_])/POSIX::isprint($1) ? $1 : sprintf "\\%03o", ord $1/ge; + } $_; } @@ -179,6 +187,12 @@ sub constant_types () { #ifndef NVTYPE typedef double NV; /* 5.6 and later define NVTYPE, and typedef NV to it. */ #endif +#ifndef aTHX_ +#define aTHX_ /* 5.6 or later define this for threading support. */ +#endif +#ifndef pTHX_ +#define pTHX_ /* 5.6 or later define this for threading support. */ +#endif EOT return join '', @lines;