Version v5.7.2 Development release working toward v5.8
--------------
____________________________________________________________________________
+[ 14309] By: jhi on 2002/01/17 14:39:20
+ Log: Rename kill_perl to fresh_perl; replace fresh_perl()
+ with fresh_perl_is() and fresh_perl_like().
+ Branch: perl
+ + t/run/fresh_perl.t
+ - t/run/kill_perl.t
+ ! MANIFEST t/test.pl
+____________________________________________________________________________
+[ 14308] By: jhi on 2002/01/17 14:06:46
+ Log: Subject: Re: [Patch @14129] fixes Unicode::Normalize
+ From: Benjamin Goldberg <goldbb2@earthlink.net>
+ Date: Wed, 09 Jan 2002 21:03:16 -0500
+ Message-ID: <3C3CF664.A2BF3AC2@earthlink.net>
+ Branch: perl
+ ! ext/Unicode/Normalize/Normalize.pm
+____________________________________________________________________________
+[ 14307] By: jhi on 2002/01/17 14:04:06
+ Log: Retract #14144 as Hugo isn't happy with it.
+ Branch: perl
+ ! scope.c t/run/kill_perl.t
+____________________________________________________________________________
+[ 14306] By: jhi on 2002/01/17 13:57:53
+ Log: Subject: [REPATCH] Attribute::Handlers lexical refcount circus
+ From: Richard Clamp <richardc@unixbeard.net>
+ Date: Wed, 16 Jan 2002 17:34:31 +0000
+ Message-ID: <20020116173431.GA28924@mirth.demon.co.uk>
+ Branch: perl
+ ! lib/Attribute/Handlers.pm lib/Attribute/Handlers/t/multi.t
+____________________________________________________________________________
+[ 14305] By: jhi on 2002/01/17 13:32:56
+ Log: Subject: [PATCH bleadperl] No more warnings from Opcode.c
+ From: Nikola Knezevic <indy@tesla.rcub.bg.ac.yu>
+ Date: Tue, 15 Jan 2002 21:23:30 +0100
+ Message-ID: <595405346.20020115212330@tesla.rcub.bg.ac.yu>
+ Branch: perl
+ ! ext/Opcode/Opcode.xs
+____________________________________________________________________________
+[ 14304] By: jhi on 2002/01/16 16:55:52
+ Log: Subject: [PATCH] Fix crypt.t and fs.t tests
+ From: Paul_GreenVOS@vos.stratus.com
+ Date: Wed, 16 Jan 02 6:42 est
+ Message-Id: <200201161143.GAA02292@mailhub1.stratus.com>
+ Branch: perl
+ ! t/io/fs.t t/op/crypt.t
+____________________________________________________________________________
+[ 14303] By: jhi on 2002/01/16 14:55:57
+ Log: Subject: Re: [PATCH] length of undefined $(digit) should warn
+ From: Rafael Garcia-Suarez <rgarciasuarez@free.fr>
+ Date: Wed, 16 Jan 2002 13:43:39 +0100
+ Message-ID: <20020116134339.A704@rafael>
+
+ (replaces #14302)
+ Branch: perl
+ ! mg.c t/lib/warnings/mg
+____________________________________________________________________________
+[ 14302] By: jhi on 2002/01/16 13:47:58
+ Log: (replaced by #14303)
+ Subject: [PATCH] length of undefined $(digit) should warn
+ From: Rafael Garcia-Suarez <rgarciasuarez@free.fr>
+ Date: Tue, 15 Jan 2002 23:02:44 +0100
+ Message-ID: <20020115230244.A31786@rafael>
+ Branch: perl
+ ! mg.c t/lib/warnings/mg
+____________________________________________________________________________
+[ 14301] By: jhi on 2002/01/16 13:45:20
+ Log: The non-MakeMaker.pm parts of
+
+ Subject: [PATCH] Re: MM_Beos.pm?
+ From: Tels <perl_dummy@bloodgate.com>
+ Date: Mon, 14 Jan 2002 21:00:31 +0100 (CET)
+ Message-Id: <200201142006.WAA29544@taas.iki.fi>
+ Branch: perl
+ ! ext/SDBM_File/sdbm/Makefile.PL lib/ExtUtils/MM_Unix.pm
+ ! lib/ExtUtils/t/MM_Unix.t
+____________________________________________________________________________
+[ 14300] By: jhi on 2002/01/16 13:40:53
+ Log: Subject: [PATCH] Re: [PATCH] strictifying ExtUtils::MakeMaker, take 3
+ From: Michael G Schwern <schwern@pobox.com>
+ Date: Tue, 15 Jan 2002 20:07:50 -0500
+ Message-ID: <20020116010750.GH625@blackrider>
+ Branch: perl
+ ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[ 14299] By: jhi on 2002/01/16 13:37:41
+ Log: Subject: [PATCH] lib/Text/Tabs.pm doc format touchup
+ From: Jeffrey Friedl <jfriedl@yahoo.com>
+ Date: Tue, 15 Jan 2002 15:30:22 -0800 (PST)
+ Message-Id: <200201152330.g0FNUM784820@ventrue.corp.yahoo.com>
+ Branch: perl
+ ! lib/Text/Tabs.pm
+____________________________________________________________________________
+[ 14298] By: jhi on 2002/01/16 13:34:29
+ Log: Subject: [PATCH] Tidy up EXE_EXT patches to MM_Unix.pm
+ From: "Green, Paul" <Paul.Green@stratus.com>
+ Date: Tue, 15 Jan 2002 22:28:10 -0500
+ Message-ID: <95AE3CDB3543D511883A0020485B38B9023534F0@exna3.stratus.com>
+ Branch: perl
+ ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[ 14297] By: jhi on 2002/01/16 13:21:26
+ Log: Integrate perlio; offsetof() is in <stddef.h>
+ Branch: perl
+ !> ext/Socket/Socket.xs
+____________________________________________________________________________
+[ 14294] By: jhi on 2002/01/16 05:37:29
+ Log: Jeffrey's Unicode adventure continues: unify the In/*.pl
+ and Is/*.pl to lib/*.pl, remove In.pl and Is.pl, introduce
+ Canonical.pl and Exact.pl.
+ Branch: perl
+ + (add 259 files)
+ - (delete 288 files)
+ ! MANIFEST lib/unicore/Makefile lib/unicore/Properties
+ ! lib/unicore/To/Digit.pl lib/unicore/To/Fold.pl
+ ! lib/unicore/To/Lower.pl lib/unicore/To/Title.pl
+ ! lib/unicore/To/Upper.pl lib/unicore/mktables lib/utf8_heavy.pl
+____________________________________________________________________________
+[ 14293] By: jhi on 2002/01/16 00:32:27
+ Log: s/SvPV/SvPVbyte/g, as suggested by Gisle Aas.
+ Branch: perl
+ ! ext/Socket/Socket.xs
+____________________________________________________________________________
+[ 14292] By: jhi on 2002/01/15 20:06:49
+ Log: Subject: [PATCH] Add Slab_Free to embed.fnc
+ From: "Mattia Barbon" <mbarbon@dsi.unive.it>
+ Date: Tue, 15 Jan 2002 21:59:19 +0100
+ Message-ID: <3C44A637.16602.25EB208@localhost>
+ Branch: perl
+ ! embed.fnc embed.h proto.h
+____________________________________________________________________________
+[ 14291] By: jhi on 2002/01/15 20:00:02
+ Log: Duh. The updated In/*.pl weren't checked in.
+ Branch: perl
+ ! lib/unicore/In/Alphabet.pl lib/unicore/In/Arabic.pl
+ ! lib/unicore/In/ArabicP2.pl lib/unicore/In/ArabicPr.pl
+ ! lib/unicore/In/Armenian.pl lib/unicore/In/Arrows.pl
+ ! lib/unicore/In/BasicLat.pl lib/unicore/In/Bengali.pl
+ ! lib/unicore/In/BlockEle.pl lib/unicore/In/Bopomof2.pl
+ ! lib/unicore/In/Bopomofo.pl lib/unicore/In/BoxDrawi.pl
+ ! lib/unicore/In/BrailleP.pl lib/unicore/In/Byzantin.pl
+ ! lib/unicore/In/Cherokee.pl lib/unicore/In/CjkComp2.pl
+ ! lib/unicore/In/CjkComp3.pl lib/unicore/In/CjkComp4.pl
+ ! lib/unicore/In/CjkCompa.pl lib/unicore/In/CjkRadic.pl
+ ! lib/unicore/In/CjkSymbo.pl lib/unicore/In/CjkUnif2.pl
+ ! lib/unicore/In/CjkUnif3.pl lib/unicore/In/CjkUnifi.pl
+ ! lib/unicore/In/Combini2.pl lib/unicore/In/Combini3.pl
+ ! lib/unicore/In/Combinin.pl lib/unicore/In/ControlP.pl
+ ! lib/unicore/In/Currency.pl lib/unicore/In/Cyrillic.pl
+ ! lib/unicore/In/Deseret.pl lib/unicore/In/Devanaga.pl
+ ! lib/unicore/In/Dingbats.pl lib/unicore/In/Enclose2.pl
+ ! lib/unicore/In/Enclosed.pl lib/unicore/In/Ethiopic.pl
+ ! lib/unicore/In/GeneralP.pl lib/unicore/In/Geometri.pl
+ ! lib/unicore/In/Georgian.pl lib/unicore/In/Gothic.pl
+ ! lib/unicore/In/Greek.pl lib/unicore/In/GreekExt.pl
+ ! lib/unicore/In/Gujarati.pl lib/unicore/In/Gurmukhi.pl
+ ! lib/unicore/In/Halfwidt.pl lib/unicore/In/HangulCo.pl
+ ! lib/unicore/In/HangulJa.pl lib/unicore/In/HangulSy.pl
+ ! lib/unicore/In/Hebrew.pl lib/unicore/In/HighPriv.pl
+ ! lib/unicore/In/HighSurr.pl lib/unicore/In/Hiragana.pl
+ ! lib/unicore/In/Ideograp.pl lib/unicore/In/IpaExten.pl
+ ! lib/unicore/In/Kanbun.pl lib/unicore/In/KangxiRa.pl
+ ! lib/unicore/In/Kannada.pl lib/unicore/In/Katakana.pl
+ ! lib/unicore/In/Khmer.pl lib/unicore/In/Lao.pl
+ ! lib/unicore/In/Latin1Su.pl lib/unicore/In/LatinEx2.pl
+ ! lib/unicore/In/LatinEx3.pl lib/unicore/In/LatinExt.pl
+ ! lib/unicore/In/Letterli.pl lib/unicore/In/LowSurro.pl
+ ! lib/unicore/In/Malayala.pl lib/unicore/In/Mathema2.pl
+ ! lib/unicore/In/Mathemat.pl lib/unicore/In/Miscell2.pl
+ ! lib/unicore/In/Miscella.pl lib/unicore/In/Mongolia.pl
+ ! lib/unicore/In/MusicalS.pl lib/unicore/In/Myanmar.pl
+ ! lib/unicore/In/NumberFo.pl lib/unicore/In/Ogham.pl
+ ! lib/unicore/In/OldItali.pl lib/unicore/In/OpticalC.pl
+ ! lib/unicore/In/Oriya.pl lib/unicore/In/PrivateU.pl
+ ! lib/unicore/In/Runic.pl lib/unicore/In/Sinhala.pl
+ ! lib/unicore/In/SmallFor.pl lib/unicore/In/SpacingM.pl
+ ! lib/unicore/In/Specials.pl lib/unicore/In/Superscr.pl
+ ! lib/unicore/In/Syriac.pl lib/unicore/In/Tags.pl
+ ! lib/unicore/In/Tamil.pl lib/unicore/In/Telugu.pl
+ ! lib/unicore/In/Thaana.pl lib/unicore/In/Thai.pl
+ ! lib/unicore/In/Tibetan.pl lib/unicore/In/UnifiedC.pl
+ ! lib/unicore/In/YiRadica.pl lib/unicore/In/YiSyllab.pl
+____________________________________________________________________________
+[ 14290] By: jhi on 2002/01/15 18:39:54
+ Log: Update Changes.
+ Branch: perl
+ ! Changes patchlevel.h
+____________________________________________________________________________
[ 14289] By: jhi on 2002/01/15 18:38:03
Log: Jeffrey is trying very hard to avoid working on his
book, it would seem :-) (better naming, better comments
t/pod/testpods/lib/Pod/Stuff.pm Sample data for find.t
t/README Instructions for regression tests
t/run/exit.t Test perl's exit status.
-t/run/kill_perl.t Tests that kill perl.
+t/run/fresh_perl.t Tests that require a fresh perl.
t/run/noswitch.t Test aliasing ARGV for other switch tests
t/run/runenv.t Test if perl honors its environment variables.
t/run/switcha.t Test the -a switch
bitmap = SvPV(opset_all, len);
i = len-1; /* deal with last byte specially, see below */
while(i-- > 0)
- bitmap[i] = 0xFF;
+ bitmap[i] = (char)0xFF;
/* Take care to set the right number of bits in the last byte */
bitmap[len-1] = (PL_maxo & 0x07) ? ~(0xFF << (PL_maxo & 0x07)) : 0xFF;
put_op_bitspec(aTHX_ ":all",0, opset_all); /* don't mortalise */
use ExtUtils::MakeMaker;
-$define = '-DSDBM -DDUFF';
+my $define = '-DSDBM -DDUFF';
$define .= ' -DWIN32 -DPERL_STATIC_SYMS' if ($^O eq 'MSWin32');
if ($^O eq 'VMS') { # Old VAXC compiler can't handle Duff's device
=head2 Character Data
These functions are interface of character data used internally.
-If you want only to get unicode normalization forms,
-you doesn't need call them by yourself.
+If you want only to get Unicode normalization forms, you don't need
+call them yourself.
=over 4
_apply_handler_AH_($decl,$gphase)
if $global_phases{$gphase} <= $global_phase;
}
- push @declarations, $decl;
+ # if _gen_handler_AH_ is being called after CHECK it's
+ # for a lexical, so we don't want to keep a reference
+ # around
+ push @declarations, $decl
+ if $global_phase == 0;
}
$_ = undef;
}
my %rowdy : Rowdy(37,'this arg should be ignored');
$rowdy{key}++;
+
+# check that applying attributes to lexicals doesn't unduly worry
+# their refcounts
+my $out = "begin\n";
+my $applied;
+sub UNIVERSAL::Dummy :ATTR { ++$applied };
+sub Dummy::DESTROY { $out .= "bye\n" }
+
+{ my $dummy; $dummy = bless {}, 'Dummy'; }
+ok( $out eq "begin\nbye\n", 45 );
+
+{ my $dummy : Dummy; $dummy = bless {}, 'Dummy'; }
+ok( $out eq "begin\nbye\nbye\n", 46 );
+
+# are lexical attributes reapplied correctly?
+sub dummy { my $dummy : Dummy; }
+$applied = 0;
+dummy(); dummy();
+ok( $applied == 2, 47 );
+
+# 45-47 again, but for our variables
+$out = "begin\n";
+{ our $dummy; $dummy = bless {}, 'Dummy'; }
+ok( $out eq "begin\n", 48 );
+{ our $dummy : Dummy; $dummy = bless {}, 'Dummy'; }
+ok( $out eq "begin\nbye\n", 49 );
+undef $::dummy;
+ok( $out eq "begin\nbye\nbye\n", 50 );
+
+# are lexical attributes reapplied correctly?
+sub dummy_our { our $banjo : Dummy; }
+$applied = 0;
+dummy_our(); dummy_our();
+ok( $applied == 0, 51 );
our ($Is_Mac,$Is_OS2,$Is_VMS,$Is_Win32,$Is_Dos,
$Verbose,%pm,%static,$Xsubpp_Version);
-our $VERSION = '1.12606';
+our $VERSION = '1.12607';
require ExtUtils::MakeMaker;
ExtUtils::MakeMaker->import(qw($Verbose &neatvalue));
push @defpath, $component if defined $component;
}
- my @perls = ($self->canonpath($^X), 'perl', 'perl5', "perl$Config{version}");
+ # Build up a set of file names (not command names).
+ my $thisperl = $self->canonpath($^X);
+ $thisperl .= $Config{exe_ext} unless $thisperl =~ m/$Config{exe_ext}$/i;
+ my @perls = ('perl', 'perl5', "perl$Config{version}");
+ @perls = ($thisperl, (map $_.=$Config{exe_ext}, @perls));
- # miniperl has priority over all but the cannonical perl when in the
+ # miniperl has priority over all but the cannonical perl when in the
# core. Otherwise its a last resort.
+ my $miniperl = "miniperl$Config{exe_ext}";
if( $self->{PERL_CORE} ) {
- splice @perls, 1, 0, 'miniperl';
+ splice @perls, 1, 0, $miniperl;
}
else {
- push @perls, 'miniperl';
- }
-
- # Build up a set of file names (not command names).
- foreach $element (@perls) {
- $element .= $Config{exe_ext}
- unless $element =~ m/$Config{exe_ext}$/i;
+ push @perls, $miniperl;
}
$self->{PERL} ||=
=item perl_archive
This is internal method that returns path to libperl.a equivalent
-to be linked to dynamic extensions. UNIX does not have one but OS2
-and Win32 do.
+to be linked to dynamic extensions. UNIX does not have one but other
+OSs might have one.
=cut
sub perl_archive
{
- return '$(PERL_INC)' . "/$Config{libperl}" if $^O eq "beos";
return "";
}
package ExtUtils::MakeMaker;
-$VERSION = "5.47";
+$VERSION = "5.48";
$Version_OK = "5.17"; # Makefiles older than $Version_OK will die
# (Will be checked from MakeMaker version 4.13 onwards)
($Revision = substr(q$Revision: 1.222 $, 10)) =~ s/\s+$//;
require Exporter;
use Config;
use Carp ();
-#use FileHandle ();
use vars qw(
-
@ISA @EXPORT @EXPORT_OK $AUTOLOAD
- $ISA_TTY $Is_Mac $Is_OS2 $Is_VMS $Revision
- $VERSION $Verbose $Version_OK %Config %Keep_after_flush
- %MM_Sections %Prepend_dot_dot %Recognized_Att_Keys
- @Get_from_Config @MM_Sections @Overridable @Parent
-
+ $ISA_TTY $Revision $VERSION $Verbose $Version_OK %Config
+ %Keep_after_flush %MM_Sections %Prepend_dot_dot
+ %Recognized_Att_Keys @Get_from_Config @MM_Sections @Overridable
+ @Parent $PACKNAME
);
-# use strict;
+use strict;
# &DynaLoader::mod2fname should be available to miniperl, thus
# should be a pseudo-builtin (cmp. os2.c).
#
# Now we can pull in the friends
#
-$Is_VMS = $^O eq 'VMS';
-$Is_OS2 = $^O eq 'os2';
-$Is_Mac = $^O eq 'MacOS';
-$Is_Win32 = $^O eq 'MSWin32';
-$Is_Cygwin = $^O eq 'cygwin';
-$Is_NetWare = $Config{'osname'} eq 'NetWare';
+my $Is_VMS = $^O eq 'VMS';
+my $Is_OS2 = $^O eq 'os2';
+my $Is_Mac = $^O eq 'MacOS';
+my $Is_Win32 = $^O eq 'MSWin32';
+my $Is_Cygwin = $^O eq 'cygwin';
+my $Is_NetWare = $Config{osname} eq 'NetWare';
+my $Is_BeOS = $^O =~ /beos/i; # XXX should this be that loose?
require ExtUtils::MM_Unix;
if ($Is_Cygwin) {
require ExtUtils::MM_Cygwin;
}
+if ($Is_BeOS) {
+ require ExtUtils::MM_BeOS;
+}
full_setup();
sub eval_in_subdirs {
my($self) = @_;
- my($dir);
use Cwd qw(cwd abs_path);
my $pwd = cwd();
local @INC = map eval {abs_path($_) if -e} || $_, @INC;
- foreach $dir (@{$self->{DIR}}){
+ foreach my $dir (@{$self->{DIR}}){
my($abs) = $self->catdir($pwd,$dir);
$self->eval_in_x($abs);
}
my($self,$dir) = @_;
package main;
chdir $dir or Carp::carp("Couldn't change to directory $dir: $!");
-# use FileHandle ();
-# my $fh = new FileHandle;
-# $fh->open("Makefile.PL") or Carp::carp("Couldn't open Makefile.PL in $dir");
- local *FH;
- open(FH,"Makefile.PL") or Carp::carp("Couldn't open Makefile.PL in $dir");
-# my $eval = join "", <$fh>;
- my $eval = join "", <FH>;
-# $fh->close;
- close FH;
- eval $eval;
+
+ eval { do './Makefile.PL' };
if ($@) {
# if ($@ =~ /prerequisites/) {
# die "MakeMaker WARNING: $@";
# package name for the classes into which the first object will be blessed
$PACKNAME = "PACK000";
- @Attrib_help = qw/
+ my @attrib_help = qw/
AUTHOR ABSTRACT ABSTRACT_FROM BINARY_LOCATION
C CAPI CCFLAGS CONFIG CONFIGURE DEFINE DIR DISTNAME DL_FUNCS DL_VARS
exe_ext full_ar
);
- my $item;
- foreach $item (@Attrib_help){
+ foreach my $item (@attrib_help){
$Recognized_Att_Keys{$item} = 1;
}
- foreach $item (@Get_from_Config) {
+ foreach my $item (@Get_from_Config) {
$Recognized_Att_Keys{uc $item} = $Config{$item};
print "Attribute '\U$item\E' => '$Config{$item}'\n"
if ($Verbose >= 2);
my(%initial_att) = %$self; # record initial attributes
my(%unsatisfied) = ();
- my($prereq);
- foreach $prereq (sort keys %{$self->{PREREQ_PM}}) {
- my $eval = "require $prereq";
- eval $eval;
+ foreach my $prereq (sort keys %{$self->{PREREQ_PM}}) {
+ eval "require $prereq";
if ($@) {
warn "Warning: prerequisite $prereq $self->{PREREQ_PM}->{$prereq} not found.\n" unless $self->{PREREQ_FATAL};
my $newclass = ++$PACKNAME;
local @Parent = @Parent; # Protect against non-local exits
{
-# no strict;
+ no strict 'refs';
print "Blessing Object into class [$newclass]\n" if $Verbose>=2;
mv_all_methods("MY",$newclass);
bless $self, $newclass;
# MakeMaker Parameters:
END
- foreach $key (sort keys %initial_att){
+ foreach my $key (sort keys %initial_att){
my($v) = neatvalue($initial_att{$key});
$v =~ s/(CODE|HASH|ARRAY|SCALAR)\([\dxa-f]+\)/$1\(...\)/;
$v =~ tr/\n/ /s;
# MakeMaker 'CONFIGURE' Parameters:
END
if (scalar(keys %configure_att) > 0) {
- foreach $key (sort keys %configure_att){
+ foreach my $key (sort keys %configure_att){
my($v) = neatvalue($configure_att{$key});
$v =~ s/(CODE|HASH|ARRAY|SCALAR)\([\dxa-f]+\)/$1\(...\)/;
$v =~ tr/\n/ /s;
$self->eval_in_subdirs if @{$self->{DIR}};
}
- my $section;
- foreach $section ( @MM_Sections ){
+ foreach my $section ( @MM_Sections ){
print "Processing Makefile '$section' section\n" if ($Verbose >= 2);
my($skipit) = $self->skipcheck($section);
if ($skipit){
sub check_manifest {
print STDOUT "Checking if your kit is complete...\n";
require ExtUtils::Manifest;
- $ExtUtils::Manifest::Quiet=$ExtUtils::Manifest::Quiet=1; #avoid warning
- my(@missed)=ExtUtils::Manifest::manicheck();
- if (@missed){
+ # avoid warning
+ $ExtUtils::Manifest::Quiet = $ExtUtils::Manifest::Quiet = 1;
+ my(@missed) = ExtUtils::Manifest::manicheck();
+ if (@missed) {
print STDOUT "Warning: the following files are missing in your kit:\n";
print "\t", join "\n\t", @missed;
print STDOUT "\n";
sub parse_args{
my($self, @args) = @_;
- foreach (@args){
- unless (m/(.*?)=(.*)/){
+ foreach (@args) {
+ unless (m/(.*?)=(.*)/) {
help(),exit 1 if m/^help$/;
++$Verbose if m/^verb/;
next;
}
my($name, $value) = ($1, $2);
- if ($value =~ m/^~(\w+)?/){ # tilde with optional username
+ if ($value =~ m/^~(\w+)?/) { # tilde with optional username
$value =~ s [^~(\w*)]
[$1 ?
((getpwnam($1))[7] || "~$1") :
if (defined $self->{EXCLUDE_EXT} && ref \$self->{EXCLUDE_EXT} eq 'SCALAR') {
$self->{EXCLUDE_EXT} = [grep $_, split '\s+', $self->{EXCLUDE_EXT}];
}
- my $mmkey;
- foreach $mmkey (sort keys %$self){
+
+ foreach my $mmkey (sort keys %$self){
print STDOUT " $mmkey => ", neatvalue($self->{$mmkey}), "\n" if $Verbose;
print STDOUT "'$mmkey' is not a known MakeMaker parameter name.\n"
unless exists $Recognized_Att_Keys{$mmkey};
return unless -d "hints";
# First we look for the best hintsfile we have
- my(@goodhints);
my($hint)="${^O}_$Config{osvers}";
$hint =~ s/\./_/g;
$hint =~ s/_$//;
return unless -f "hints/$hint.pl"; # really there
# execute the hintsfile:
-# use FileHandle ();
-# my $fh = new FileHandle;
-# $fh->open("hints/$hint.pl");
- local *FH;
- open(FH,"hints/$hint.pl");
-# @goodhints = <$fh>;
- @goodhints = <FH>;
-# $fh->close;
- close FH;
print STDOUT "Processing hints file hints/$hint.pl\n";
- eval join('',@goodhints);
+ eval { do "hints/$hint.pl" };
print STDOUT $@ if $@;
}
sub mv_all_methods {
my($from,$to) = @_;
- my($method);
+ no strict 'refs';
my($symtab) = \%{"${from}::"};
-# no strict;
# Here you see the *current* list of methods that are overridable
# from Makefile.PL via MY:: subroutines. As of VERSION 5.07 I'm
# still trying to reduce the list to some reasonable minimum --
# because I want to make it easier for the user. A.K.
- foreach $method (@Overridable) {
+ foreach my $method (@Overridable) {
# We cannot say "next" here. Nick might call MY->makeaperl
# which isn't defined right now
my($t) = ref $v;
return "q[$v]" unless $t;
if ($t eq 'ARRAY') {
- my(@m, $elem, @neat);
+ my(@m, @neat);
push @m, "[";
- foreach $elem (@$v) {
+ foreach my $elem (@$v) {
push @neat, "q[$elem]";
}
push @m, join ", ", @neat;
my(@m);
if ($Verbose){
push @m, "\n# Full list of MakeMaker attribute values:";
- foreach $key (sort keys %$self){
+ foreach my $key (sort keys %$self){
next if $key eq 'RESULT' || $key =~ /^[A-Z][a-z]/;
my($v) = neatvalue($self->{$key});
$v =~ s/(CODE|HASH|ARRAY|SCALAR)\([\dxa-f]+\)/$1\(...\)/;
# 2001-12-16 Tels first version
# 2002-01-13 Tels 0.02 added some tests for various functions, added Andreas
# fix to the version test (>= vs ==)
+# 2002-01-14 Tels 0.03 exclude on beos and netware, /i for $^O test
BEGIN {
chdir 't' if -d 't';
BEGIN {
use Test::More;
- if( $^O =~ /^VMS|os2|MacOS|MSWin32|cygwin$/ ) {
+ if( $^O =~ /^VMS|os2|MacOS|MSWin32|cygwin|beos|netware$/i ) {
plan skip_all => 'Non-Unix platform';
}
else {
=head1 SYNOPSIS
-use Text::Tabs;
+ use Text::Tabs;
-$tabstop = 4;
-@lines_without_tabs = expand(@lines_with_tabs);
-@lines_with_tabs = unexpand(@lines_without_tabs);
+ $tabstop = 4;
+ @lines_without_tabs = expand(@lines_with_tabs);
+ @lines_with_tabs = unexpand(@lines_without_tabs);
=head1 DESCRIPTION
Perl_croak(aTHX_ "panic: magic_len: %"IVdf, (IV)i);
return i;
}
+ else {
+ if (ckWARN(WARN_UNINITIALIZED))
+ report_uninit();
+ }
+ }
+ else {
+ if (ckWARN(WARN_UNINITIALIZED))
+ report_uninit();
}
return 0;
case '+':
#if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT)
static char *local_patches[] = {
NULL
- ,"DEVEL14289"
+ ,"DEVEL14309"
,NULL
};
DEBUG_S(PerlIO_printf(Perl_debug_log,
"restore svref: %p %p:%s -> %p:%s\n",
ptr, sv, SvPEEK(sv), value, SvPEEK(value)));
- if (SvTYPE(sv) == SVt_PVMG && SvMAGIC(sv)) {
+ if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv) &&
+ SvTYPE(sv) != SVt_PVGV)
+ {
(void)SvUPGRADE(value, SvTYPE(sv));
SvMAGIC(value) = SvMAGIC(sv);
SvFLAGS(value) |= SvMAGICAL(sv);
* croaking that might ensue when the SvSETMAGIC() below is
* called, or to avoid two different SVs pointing at the same
* SvMAGIC()). This needs a total rethink. --GSAR */
- else if (SvTYPE(value) == SVt_PVMG && SvMAGIC(value)) {
+ else if (SvTYPE(value) >= SVt_PVMG && SvMAGIC(value) &&
+ SvTYPE(value) != SVt_PVGV)
+ {
SvFLAGS(value) |= (SvFLAGS(value) &
(SVp_NOK|SVp_POK)) >> PRIVSHIFT;
SvMAGICAL_off(value);
SKIP: {
eval { truncate "Iofs.tmp", 5; };
- skip("no truncate - $@", 4) if $@;
+ skip("no truncate - $@", 6) if $@;
is(-s "Iofs.tmp", 5, "truncation to five bytes");
$SIG{"INT"} = "fred"; kill "INT",$$;
EXPECT
+########
+# mg.c
+use warnings 'uninitialized';
+'foo' =~ /(foo)/;
+length $3;
+EXPECT
+Use of uninitialized value in length at - line 4.
+########
+# mg.c
+use warnings 'uninitialized';
+length $3;
+EXPECT
+Use of uninitialized value in length at - line 3.
# bets, given alternative encryption/hashing schemes like MD5,
# C2 (or higher) security schemes, and non-UNIX platforms.
-ok(substr(crypt("ab", "cd"), 2) ne substr(crypt("ab", "ce"), 2), "salt makes a difference");
+SKIP: {
+ skip ("VOS crypt ignores salt.", 1) if ($^O eq 'vos');
+ ok(substr(crypt("ab", "cd"), 2) ne substr(crypt("ab", "ce"), 2), "salt makes a difference");
+}
$a = "a\xFF\x{100}";
# ** DO NOT ADD ANY MORE TESTS HERE **
# Instead, put the test in the appropriate test file and use the
-# kill_perl() function in t/test.pl.
+# fresh_perl_is()/fresh_perl_like() functions in t/test.pl.
# This is for tests that will normally cause segfaults, and other nasty
# errors that might kill the interpreter and for some reason you can't
my($prog,$expected) = split(/\nEXPECT\n/, $raw_prog);
- kill_perl($prog, $expected, { switches => [$switch] }, $name);
+ $expected =~ s/\n+$//;
+
+ fresh_perl_is($prog, $expected, { switches => [$switch] }, $name);
}
__END__
EXPECT
ok
########
-open(H,'run/kill_perl.t'); # must be in the 't' directory
+open(H,'run/fresh_perl.t'); # must be in the 't' directory
stat(H);
print "ok\n" if (-e _ and -f _ and -r _);
EXPECT
print join '', @a, "\n";
EXPECT
123456789
-######## [ID 20010912.007] segfault or "Can't modify non-existent substring"
-$b="abcde";
-$s = \substr($b, 2, 1);
-print "before: $$s\n";
-{
- local $k;
- *k = $s;
-}
-print "after: $$s\n";
-EXPECT
-before: c
-after: c
######## [ID 20020104.007] "coredump on dbmclose"
package Foo;
eval { dbmclose %h }; # not all places have dbm* functions
1 while -f ++$tmpfile;
END { unlink_all $tmpfile }
-sub kill_perl {
- my($prog, $expected, $runperl_args, $name) = @_;
+#
+# _fresh_perl
+#
+# The $resolve must be a subref that tests the first argument
+# for success, or returns the definition of success (e.g. the
+# expected scalar) if given no arguments.
+#
+
+sub _fresh_perl {
+ my($prog, $resolve, $runperl_args, $name) = @_;
$runperl_args ||= {};
$runperl_args->{progfile} = $tmpfile;
$results =~ s/\n\n/\n/g;
}
- $expected =~ s/\n+$//;
-
- my $pass = $results eq $expected;
+ my $pass = $resolve->($results);
unless ($pass) {
print STDERR "# PROG: $switch\n$prog\n";
- print STDERR "# EXPECTED:\n$expected\n";
+ print STDERR "# EXPECTED:\n", $resolve->(), "\n";
print STDERR "# GOT:\n$results\n";
print STDERR "# STATUS: $status\n";
}
($name) = $prog =~ /^(.{1,35})/ unless $name;
- _ok($pass, _where(), "kill_perl - $name");
+ _ok($pass, _where(), "fresh_perl - $name");
+}
+
+#
+# run_perl_is
+#
+# Combination of run_perl() and is().
+#
+
+sub fresh_perl_is {
+ my($prog, $expected, $runperl_args, $name) = @_;
+ _fresh_perl($prog,
+ sub { @_ ? $_[0] eq $expected : $expected },
+ $runperl_args, $name);
+}
+
+#
+# run_perl_like
+#
+# Combination of run_perl() and like().
+#
+
+sub fresh_perl_like {
+ my($prog, $expected, $runperl_args, $name) = @_;
+ _fresh_perl($prog,
+ sub { @_ ?
+ $_[0] =~ (ref $expected ? $expected : /$expected/) :
+ $expected },
+ $runperl_args, $name);
}
1;