959 lines
31 KiB
Plaintext
959 lines
31 KiB
Plaintext
--- ./Configure.orig 2006-01-08 14:51:03.000000000 +0000
|
|
+++ ./Configure 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -98,7 +98,7 @@ paths="$paths /usr/5bin /etc /usr/gnu/bi
|
|
paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
|
|
paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
|
|
paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
|
|
-paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
|
|
+paths="$paths /etc /usr/lib /usr/lib64 /usr/ucblib /lib /usr/ccs/lib"
|
|
paths="$paths /sbin /usr/sbin /usr/libexec"
|
|
paths="$paths /system/gnu_library/bin"
|
|
|
|
@@ -1259,7 +1259,7 @@ loclibpth="/usr/local/lib /opt/local/lib
|
|
loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
|
|
|
|
: general looking path for locating libraries
|
|
-glibpth="/lib /usr/lib $xlibpth"
|
|
+glibpth="/lib /usr/lib /lib64 /usr/lib64 $xlibpth"
|
|
glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
|
|
test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
|
|
test -f /shlib/libc.so && glibpth="/shlib $glibpth"
|
|
@@ -2290,7 +2290,7 @@ uname
|
|
zip
|
|
"
|
|
pth=`echo $PATH | sed -e "s/$p_/ /g"`
|
|
-pth="$pth /lib /usr/lib"
|
|
+pth="$pth /lib /usr/lib /lib64 /usr/lib64"
|
|
for file in $loclist; do
|
|
eval xxx=\$$file
|
|
case "$xxx" in
|
|
@@ -7586,7 +7586,7 @@ EOM
|
|
;;
|
|
*) case "$osname" in
|
|
darwin) dflt='none' ;;
|
|
- svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
|
|
+ svr4*|esix*|linux*|solaris|nonstopux) dflt='-fPIC' ;;
|
|
*) dflt='-fpic' ;;
|
|
esac ;;
|
|
esac ;;
|
|
@@ -17868,14 +17868,20 @@ int main(int argc, char *argv[])
|
|
}
|
|
EOCP
|
|
set try
|
|
+ # this is really stupid, but we have to link in the -ldb to have
|
|
+ # the above program succeed
|
|
+ _old_libs="$libs"
|
|
+ libs="$libs -ldb"
|
|
if eval $compile_ok && $run ./try; then
|
|
echo 'Looks OK.' >&4
|
|
+ libs="$_old_libs"
|
|
set `$run ./try 1`
|
|
db_version_major=$1
|
|
db_version_minor=$2
|
|
db_version_patch=$3
|
|
else
|
|
echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
|
|
+ libs="$_old_libs"
|
|
i_db=$undef
|
|
case " $libs " in
|
|
*"-ldb "*)
|
|
@@ -17918,7 +17924,7 @@ int main()
|
|
}
|
|
#endif
|
|
EOCP
|
|
- if $cc $ccflags -c try.c >try.out 2>&1 ; then
|
|
+ if $cc $ccflags -c try.c -ldb >try.out 2>&1 ; then
|
|
if $contains warning try.out >>/dev/null 2>&1 ; then
|
|
db_hashtype='int'
|
|
else
|
|
@@ -17963,7 +17969,7 @@ int main()
|
|
}
|
|
#endif
|
|
EOCP
|
|
- if $cc $ccflags -c try.c >try.out 2>&1 ; then
|
|
+ if $cc $ccflags -c try.c -ldb >try.out 2>&1 ; then
|
|
if $contains warning try.out >>/dev/null 2>&1 ; then
|
|
db_prefixtype='int'
|
|
else
|
|
@@ -21757,7 +21763,7 @@ passcat='$passcat'
|
|
patchlevel='$patchlevel'
|
|
path_sep='$path_sep'
|
|
perl5='$perl5'
|
|
-perl='$perl'
|
|
+perl='perl'
|
|
perl_patchlevel='$perl_patchlevel'
|
|
perladmin='$perladmin'
|
|
perllibs='$perllibs'
|
|
--- ./SuSE/SuSEconfig.perl.orig 2006-02-01 11:31:22.000000000 +0000
|
|
+++ ./SuSE/SuSEconfig.perl 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -0,0 +1,76 @@
|
|
+#! /bin/bash
|
|
+#
|
|
+# Copyright (c) 1996 S.u.S.E. Gmbh Fuerth, Germany. All rights reserved.
|
|
+#
|
|
+# Author: Burchard Steinbild <bs@suse.de>, 1996
|
|
+# Martin Scherbaum <maddin@suse.de>, 5/1997
|
|
+# Ruediger Oertel <ro@suse.de>, 7/1998
|
|
+
|
|
+#
|
|
+# Variables in /etc/sysconfig/suseconfig used by this script are:
|
|
+# CREATE_PERLLOCAL_POD
|
|
+#
|
|
+# This script calls the scripts:
|
|
+# /usr/sbin/perllocal.suse which comes from the package perl
|
|
+#
|
|
+
|
|
+#
|
|
+# check if we are started as root
|
|
+# only one of UID and USER must be set correctly
|
|
+#
|
|
+if test "$UID" != 0 -a "$USER" != root; then
|
|
+ echo "You must be root to start $0."
|
|
+ exit 1
|
|
+fi
|
|
+
|
|
+#
|
|
+# SuSEconfig sometimes sets the variable CHECK_NEWPACKAGE. If it is set
|
|
+# to false, we don't have to do anything.
|
|
+#
|
|
+test "$CHECK_NEWPACKAGE" = false && exit 0
|
|
+
|
|
+test -f /etc/sysconfig/suseconfig || { echo "No /etc/sysconfig/suseconfig found." && exit 1 ; }
|
|
+. /etc/sysconfig/suseconfig
|
|
+
|
|
+# this skript only works in a running system.
|
|
+
|
|
+test -n "$ROOT" && exit 0
|
|
+
|
|
+perl -e 'exit 0' 2>/dev/null || { echo "Perl not found." && exit 0 ; }
|
|
+
|
|
+#
|
|
+# see if we may do any work
|
|
+#
|
|
+test -n "$CREATE_PERLLOCAL_POD" -a "$CREATE_PERLLOCAL_POD" = "yes" \
|
|
+ || { echo "disabled in sysconfig/suseconfig" && exit 1 ; }
|
|
+
|
|
+#
|
|
+# check if anything to add
|
|
+#
|
|
+PERLLOCAL_PATH=`perl -V:installarchlib | sed -e "s/.*='\(.*\)'.*/\1/"`
|
|
+
|
|
+NEEDED="false"
|
|
+
|
|
+if test -d /var/adm/perl-modules ; then
|
|
+ if test /var/adm/perl-modules -nt $PERLLOCAL_PATH/perllocal.pod ; then
|
|
+ NEEDED="true"
|
|
+ elif test ! -f $PERLLOCAL_PATH/perllocal.pod ; then
|
|
+ NEEDED="true"
|
|
+ fi
|
|
+fi
|
|
+
|
|
+#
|
|
+# now call the working script
|
|
+#
|
|
+if "$NEEDED" = "true" ; then
|
|
+ if test -x /usr/lib/perl5/perllocal.SuSE ; then
|
|
+ /usr/lib/perl5/perllocal.SuSE
|
|
+ pod2man $PERLLOCAL_PATH/perllocal.pod | gzip > /usr/share/man/man3/perllocal.3pm.gz
|
|
+ else
|
|
+ echo "SuSEconfig.perl: /usr/lib/perl5/perllocal.SuSE not found!"
|
|
+ fi
|
|
+fi
|
|
+
|
|
+#
|
|
+# end of file SuSEconfig.perl
|
|
+#
|
|
--- ./SuSE/perllocal.SuSE.orig 2006-02-01 11:31:22.000000000 +0000
|
|
+++ ./SuSE/perllocal.SuSE 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -0,0 +1,84 @@
|
|
+#!/usr/bin/perl
|
|
+# Copyright (c) 1998 S.u.S.E. Gmbh Fuerth, Germany. All rights reserved.
|
|
+#
|
|
+# Author: Ruediger Oertel <ro@suse.de>, 1998
|
|
+#
|
|
+
|
|
+use Config;
|
|
+
|
|
+sub ReadFile {
|
|
+ local (*IF,*modules) = @_;
|
|
+
|
|
+ while(<IF>) {
|
|
+ chomp ($_);
|
|
+ next if (/^$/);
|
|
+ if (/^=head2.*$/) {
|
|
+ ($front,$rear) = split (': ',$_);
|
|
+ $front =~ s/^=head2\s*//;
|
|
+ $modules{$rear} = "$front";
|
|
+ } elsif (/^=over [0-9]*$/) {
|
|
+ ($dummy,$num) = split ('\s',$_);
|
|
+ $curnum = 0;
|
|
+ } elsif (/^C<.*:.*>$/) {
|
|
+ $entry = $_;
|
|
+ $curnum++;
|
|
+ $modules{$rear} .= "\0$entry";
|
|
+ } elsif (/^=back$/) {
|
|
+ ;
|
|
+ } elsif (/^=item \*$/) {
|
|
+ ;
|
|
+ } else {
|
|
+ print "SuSEconfig.perl: parsing perllocal:\n";
|
|
+ print "ignoring line: $_\n";
|
|
+ }
|
|
+ }
|
|
+ return %modules;
|
|
+}
|
|
+
|
|
+local (%allmodules);
|
|
+
|
|
+if (open (IF, "<$Config{'installarchlib'}/perllocal.pod")) {
|
|
+ %allmodules = ReadFile(*IF,*allmodules);
|
|
+}
|
|
+close (IF);
|
|
+
|
|
+opendir (DIR, "/var/adm/perl-modules");
|
|
+while ($dirent = readdir(DIR)) {
|
|
+ next if ($dirent =~ /^\./);
|
|
+ open (IF , "/var/adm/perl-modules/$dirent");
|
|
+ %allmodules = ReadFile(*IF,*allmodules);
|
|
+ close (IF);
|
|
+}
|
|
+closedir (DIR);
|
|
+
|
|
+
|
|
+if (open (OF, ">$Config{'installarchlib'}/perllocal.pod")) {
|
|
+ foreach $key (keys(%allmodules)) {
|
|
+ $name = $key;
|
|
+ $name =~ s/^.*L\<//;
|
|
+ $name =~ s/.*\|//;
|
|
+ $name =~ s/>$//;
|
|
+ $name =~ s/::/\//;
|
|
+ @entries = split ('\0',$allmodules{$key});
|
|
+ $ipath = $entries[1];
|
|
+ $ipath =~ s/^.*\:\s//;
|
|
+ $ipath =~ s/>$//;
|
|
+
|
|
+ # test if the module is really there, else skip
|
|
+ if ( -d "$ipath/$Config{'archname'}/auto/$name" ||
|
|
+ -d "$Config{'installarchlib'}/auto/$name" ) {
|
|
+ $num = $#entries;
|
|
+ print OF "=head2 ",shift(@entries),": $key\n\n";
|
|
+ print OF "=over $num\n\n";
|
|
+ while ($_ = shift(@entries)) {
|
|
+ print OF "=item *\n\n";
|
|
+ print OF "$_\n\n";
|
|
+ }
|
|
+ print OF "=back\n\n";
|
|
+ }
|
|
+ }
|
|
+ close (OF);
|
|
+} else {
|
|
+ print "SuSEconfig.perl: Can't write to file $Config{'installarchlib'}/perllocal.pod !\n\n";
|
|
+}
|
|
+
|
|
--- ./SuSE/sysconfig.suseconfig-perl.orig 2006-02-01 11:31:22.000000000 +0000
|
|
+++ ./SuSE/sysconfig.suseconfig-perl 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -0,0 +1,8 @@
|
|
+## Path: System/SuSEconfig
|
|
+## Type: yesno
|
|
+## Default: yes
|
|
+## Config: perl
|
|
+#
|
|
+# May SuSEconfig modify your perllocal.pod? (yes/no)
|
|
+#
|
|
+CREATE_PERLLOCAL_POD="yes"
|
|
--- ./ext/DynaLoader/hints/linux.pl.orig 2003-07-30 22:52:56.000000000 +0000
|
|
+++ ./ext/DynaLoader/hints/linux.pl 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -2,4 +2,7 @@
|
|
# Some Linux releases like to hide their <nlist.h>
|
|
$self->{CCFLAGS} = $Config{ccflags} . ' -I/usr/include/libelf'
|
|
if -f "/usr/include/libelf/nlist.h";
|
|
+# Some silly modules like mod_perl use DynaLoader.a in a shared
|
|
+# module, so add cccdlflags if we're going for a shared libperl
|
|
+$self->{CCFLAGS} = ($self->{CCFLAGS} || $Config{ccflags}) . " $Config{cccdlflags}" if $Config{'useshrplib'} eq 'true';
|
|
1;
|
|
--- ./ext/IPC/SysV/SysV.xs.orig 2001-06-30 18:46:07.000000000 +0000
|
|
+++ ./ext/IPC/SysV/SysV.xs 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -3,9 +3,6 @@
|
|
#include "XSUB.h"
|
|
|
|
#include <sys/types.h>
|
|
-#ifdef __linux__
|
|
-# include <asm/page.h>
|
|
-#endif
|
|
#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
|
|
#ifndef HAS_SEM
|
|
# include <sys/ipc.h>
|
|
--- ./ext/NDBM_File/Makefile.PL.orig 2000-05-28 18:41:12.000000000 +0000
|
|
+++ ./ext/NDBM_File/Makefile.PL 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -2,6 +2,7 @@ use ExtUtils::MakeMaker;
|
|
WriteMakefile(
|
|
NAME => 'NDBM_File',
|
|
LIBS => ["-L/usr/local/lib -lndbm", "-ldbm -lucb"],
|
|
+ CCFLAGS => '-I/usr/include/db1 -Dbool=char -DHAS_BOOL',
|
|
MAN3PODS => {}, # Pods will be built by installman.
|
|
XSPROTOARG => '-noprototypes', # XXX remove later?
|
|
VERSION_FROM => 'NDBM_File.pm',
|
|
--- ./ext/ODBM_File/Makefile.PL.orig 1998-10-15 02:46:08.000000000 +0000
|
|
+++ ./ext/ODBM_File/Makefile.PL 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -1,7 +1,7 @@
|
|
use ExtUtils::MakeMaker;
|
|
WriteMakefile(
|
|
NAME => 'ODBM_File',
|
|
- LIBS => ["-ldbm -lucb"],
|
|
+ LIBS => ["-lgdbm -lucb"],
|
|
MAN3PODS => {}, # Pods will be built by installman.
|
|
XSPROTOARG => '-noprototypes', # XXX remove later?
|
|
VERSION_FROM => 'ODBM_File.pm',
|
|
--- ./ext/ODBM_File/hints/linux.pl.orig 2002-07-09 08:52:08.000000000 +0000
|
|
+++ ./ext/ODBM_File/hints/linux.pl 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -1,3 +1,3 @@
|
|
# uses GDBM dbm compatibility feature - at least on SuSE 8.0
|
|
-$self->{LIBS} = ['-lgdbm'];
|
|
+$self->{LIBS} = ['-lgdbm -lgdbm_compat'];
|
|
|
|
--- ./ext/threads/Makefile.PL.orig 2003-04-03 06:08:54.000000000 +0000
|
|
+++ ./ext/threads/Makefile.PL 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -10,7 +10,7 @@ WriteMakefile(
|
|
(ABSTRACT_FROM => 'threads.pm', # retrieve abstract from module
|
|
AUTHOR => 'Artur Bergman <artur@contiller.se>') : ()),
|
|
'MAN3PODS' => {}, # Pods will be built by installman
|
|
- 'LIBS' => [''], # e.g., '-lm'
|
|
+ 'LIBS' => ['-lpthread'], # e.g., '-lm'
|
|
'DEFINE' => '', # e.g., '-DHAVE_SOMETHING'
|
|
# Insert -I. if you add *.h files later:
|
|
# 'INC' => '', # e.g., '-I/usr/include/other'
|
|
--- ./hints/linux.sh.orig 2005-11-18 01:18:45.000000000 +0000
|
|
+++ ./hints/linux.sh 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -42,7 +42,9 @@ ignore_versioned_solibs='y'
|
|
# BSD compatibility library no longer needed
|
|
# 'kaffe' has a /usr/lib/libnet.so which is not at all relevant for perl.
|
|
# bind causes issues with several reentrant functions
|
|
-set `echo X "$libswanted "| sed -e 's/ bsd / /' -e 's/ net / /' -e 's/ bind / /'`
|
|
+set `echo X "$libswanted "| \
|
|
+ sed -e 's/ bsd / /' -e 's/ net / /' -e 's/ bind / /' \
|
|
+ -e 's/ db / /' -e 's/ gdbm / /' -e 's/ ndbm / /'`
|
|
shift
|
|
libswanted="$*"
|
|
|
|
@@ -52,7 +54,18 @@ libswanted="$*"
|
|
# We don't use __GLIBC__ and __GLIBC_MINOR__ because they
|
|
# are insufficiently precise to distinguish things like
|
|
# libc-2.0.6 and libc-2.0.7.
|
|
-if test -L /lib/libc.so.6; then
|
|
+if test -e /lib64/libc.so.6; then
|
|
+ libc=`ls -l /lib64/libc.so.6 | awk '{print $NF}'`
|
|
+ libc=/lib64/$libc
|
|
+ #plibpth='/usr/local/lib64 /usr/lib64 /lib64'
|
|
+ glibpth='/lib64 /usr/lib64 /usr/local/lib64'
|
|
+ libspath='/usr/local/lib64 /lib64 /usr/lib64'
|
|
+ #libpth='/usr/local/lib64 /lib64 /usr/lib64'
|
|
+ loclibpth='/usr/local/lib64'
|
|
+ lddlflags='-shared -L/usr/local/lib64'
|
|
+ ldflags=' -L/usr/local/lib64'
|
|
+ libs='-lm -ldl -lcrypt'
|
|
+elif test -L /lib/libc.so.6; then
|
|
libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'`
|
|
libc=/lib/$libc
|
|
fi
|
|
@@ -101,9 +114,14 @@ case "$optimize" in
|
|
optimize='-O1'
|
|
;;
|
|
esac
|
|
+ optimize="$optimize --pipe"
|
|
;;
|
|
esac
|
|
|
|
+man1dir=/usr/share/man/man1
|
|
+man3dir=/usr/share/man/man3
|
|
+man3ext=3pm
|
|
+
|
|
# Are we using ELF? Thanks to Kenneth Albanowski <kjahds@kjahds.com>
|
|
# for this test.
|
|
cat >try.c <<'EOM'
|
|
@@ -187,6 +205,29 @@ EOM
|
|
esac
|
|
fi
|
|
|
|
+case `uname -m` in
|
|
+i?86) archname='i586-linux';;
|
|
+*) archname=`uname -m`-linux;;
|
|
+esac
|
|
+
|
|
+case $archname in
|
|
+sparc64-linux) glibpth="/lib64 /usr/lib64";;
|
|
+esac
|
|
+
|
|
+cf_email='feedback@suse.de'
|
|
+#libs='-lgdbm -ldb -ldl -lm -lc'
|
|
+#libs='-ldl -lm -lc'
|
|
+
|
|
+usedl='true'
|
|
+dlsrc='dl_dlopen.xs'
|
|
+d_dosuid='define'
|
|
+d_bincompat3='y'
|
|
+
|
|
+# We don't want to add /usr/local/include and /usr/local/lib to the search
|
|
+# paths, they are already searched by default.
|
|
+locincpth=
|
|
+loclibpth=
|
|
+
|
|
rm -f try.c a.out
|
|
|
|
if /bin/sh -c exit; then
|
|
@@ -236,6 +277,9 @@ else
|
|
echo "Couldn't find tcsh. Csh-based globbing might be broken."
|
|
fi
|
|
fi
|
|
+csh=''
|
|
+d_csh='undef'
|
|
+full_csh=''
|
|
|
|
# Shimpei Yamashita <shimpei@socrates.patnet.caltech.edu>
|
|
# Message-Id: <33EF1634.B36B6500@pobox.com>
|
|
@@ -304,6 +348,8 @@ $define|true|[yY]*)
|
|
d_localtime_r_proto="$define"
|
|
d_random_r_proto="$define"
|
|
|
|
+ test -e /lib64/libc.so.6 && libs='-lm -ldl -lcrypt -lpthread'
|
|
+
|
|
;;
|
|
esac
|
|
EOCBU
|
|
--- ./installperl.orig 2006-01-28 15:35:28.000000000 +0000
|
|
+++ ./installperl 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -227,7 +227,7 @@ if ($Is_VMS) { # Hang in there until Fi
|
|
|
|
# Do some quick sanity checks.
|
|
|
|
-if (!$nonono && $d_dosuid && $>) { die "You must run as root to install suidperl\n"; }
|
|
+# if (!$nonono && $d_dosuid && $>) { die "You must run as root to install suidperl\n"; }
|
|
|
|
$installbin || die "No installbin directory in config.sh\n";
|
|
-d $installbin || mkpath($installbin, $verbose, 0777);
|
|
@@ -370,7 +370,11 @@ else {
|
|
safe_unlink("$installbin/s$perl_verbase$ver$exe_ext");
|
|
if ($d_dosuid) {
|
|
copy("suidperl$exe_ext", "$installbin/s$perl_verbase$ver$exe_ext");
|
|
- chmod(04711, "$installbin/s$perl_verbase$ver$exe_ext");
|
|
+ if ($>) {
|
|
+ chmod(0711, "$installbin/s$perl_verbase$ver$exe_ext");
|
|
+ } else {
|
|
+ chmod(04711, "$installbin/s$perl_verbase$ver$exe_ext");
|
|
+ }
|
|
}
|
|
|
|
# Install library files.
|
|
--- ./lib/ExtUtils/Packlist.pm.orig 2002-05-17 22:35:57.000000000 +0000
|
|
+++ ./lib/ExtUtils/Packlist.pm 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -149,8 +149,11 @@ foreach my $key (sort(keys(%{$self->{dat
|
|
{
|
|
if (! -e $key)
|
|
{
|
|
- push(@missing, $key);
|
|
- delete($self->{data}{$key}) if ($remove);
|
|
+ if (($key !~ m!/man/!) || ! -e "$key.gz")
|
|
+ {
|
|
+ push(@missing, $key);
|
|
+ delete($self->{data}{$key}) if ($remove);
|
|
+ }
|
|
}
|
|
}
|
|
return(@missing);
|
|
--- ./lib/File/Path.pm.orig 2006-01-02 22:11:06.000000000 +0000
|
|
+++ ./lib/File/Path.pm 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -33,7 +33,7 @@ to print the name of each directory as i
|
|
=item *
|
|
|
|
the numeric mode to use when creating the directories
|
|
-(defaults to 0777), to be modified by the current umask.
|
|
+(defaults to 0777)
|
|
|
|
=back
|
|
|
|
@@ -72,33 +72,17 @@ or C<unlink> to remove it, or that it's
|
|
|
|
=item *
|
|
|
|
-a boolean value, which if TRUE will cause C<rmtree> to
|
|
-skip any files to which you do not have delete access
|
|
-(if running under VMS) or write access (if running
|
|
-under another OS). This will change in the future when
|
|
-a criterion for 'delete permission' under OSs other
|
|
-than VMS is settled. (defaults to FALSE)
|
|
+a boolean value, which if FALSE (the default for non-root users) will
|
|
+cause C<rmtree> to adjust the mode of directories (if required) prior
|
|
+to attempting to remove the contents. Note that on interruption or
|
|
+failure of C<rmtree>, directories may be left with more permissive
|
|
+modes for the owner.
|
|
|
|
=back
|
|
|
|
It returns the number of files successfully deleted. Symlinks are
|
|
simply deleted and not followed.
|
|
|
|
-B<NOTE:> There are race conditions internal to the implementation of
|
|
-C<rmtree> making it unsafe to use on directory trees which may be
|
|
-altered or moved while C<rmtree> is running, and in particular on any
|
|
-directory trees with any path components or subdirectories potentially
|
|
-writable by untrusted users.
|
|
-
|
|
-Additionally, if the third parameter is not TRUE and C<rmtree> is
|
|
-interrupted, it may leave files and directories with permissions altered
|
|
-to allow deletion (and older versions of this module would even set
|
|
-files and directories to world-read/writable!)
|
|
-
|
|
-Note also that the occurrence of errors in C<rmtree> can be determined I<only>
|
|
-by trapping diagnostic messages using C<$SIG{__WARN__}>; it is not apparent
|
|
-from the return value.
|
|
-
|
|
=head1 DIAGNOSTICS
|
|
|
|
=over 4
|
|
@@ -124,6 +108,7 @@ use File::Basename ();
|
|
use Exporter ();
|
|
use strict;
|
|
use warnings;
|
|
+use Cwd 'getcwd';
|
|
|
|
our $VERSION = "1.08";
|
|
our @ISA = qw( Exporter );
|
|
@@ -172,111 +157,150 @@ sub mkpath {
|
|
@created;
|
|
}
|
|
|
|
-sub rmtree {
|
|
- my($roots, $verbose, $safe) = @_;
|
|
- my(@files);
|
|
- my($count) = 0;
|
|
- $verbose ||= 0;
|
|
- $safe ||= 0;
|
|
-
|
|
- if ( defined($roots) && length($roots) ) {
|
|
- $roots = [$roots] unless ref $roots;
|
|
- }
|
|
- else {
|
|
- carp "No root path(s) specified\n";
|
|
- return 0;
|
|
- }
|
|
-
|
|
- my($root);
|
|
- foreach $root (@{$roots}) {
|
|
- if ($Is_MacOS) {
|
|
- $root = ":$root" if $root !~ /:/;
|
|
- $root =~ s#([^:])\z#$1:#;
|
|
- } else {
|
|
- $root =~ s#/\z##;
|
|
- }
|
|
- (undef, undef, my $rp) = lstat $root or next;
|
|
- $rp &= 07777; # don't forget setuid, setgid, sticky bits
|
|
- if ( -d _ ) {
|
|
- # notabene: 0700 is for making readable in the first place,
|
|
- # it's also intended to change it to writable in case we have
|
|
- # to recurse in which case we are better than rm -rf for
|
|
- # subtrees with strange permissions
|
|
- chmod($rp | 0700, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
|
|
- or carp "Can't make directory $root read+writeable: $!"
|
|
- unless $safe;
|
|
-
|
|
- if (opendir my $d, $root) {
|
|
- no strict 'refs';
|
|
- if (!defined ${"\cTAINT"} or ${"\cTAINT"}) {
|
|
- # Blindly untaint dir names
|
|
- @files = map { /^(.*)$/s ; $1 } readdir $d;
|
|
- } else {
|
|
- @files = readdir $d;
|
|
- }
|
|
- closedir $d;
|
|
- }
|
|
- else {
|
|
- carp "Can't read $root: $!";
|
|
- @files = ();
|
|
- }
|
|
-
|
|
- # Deleting large numbers of files from VMS Files-11 filesystems
|
|
- # is faster if done in reverse ASCIIbetical order
|
|
- @files = reverse @files if $Is_VMS;
|
|
- ($root = VMS::Filespec::unixify($root)) =~ s#\.dir\z## if $Is_VMS;
|
|
- if ($Is_MacOS) {
|
|
- @files = map("$root$_", @files);
|
|
- } else {
|
|
- @files = map("$root/$_", grep $_!~/^\.{1,2}\z/s,@files);
|
|
- }
|
|
- $count += rmtree(\@files,$verbose,$safe);
|
|
- if ($safe &&
|
|
- ($Is_VMS ? !&VMS::Filespec::candelete($root) : !-w $root)) {
|
|
- print "skipped $root\n" if $verbose;
|
|
- next;
|
|
- }
|
|
- chmod $rp | 0700, $root
|
|
- or carp "Can't make directory $root writeable: $!"
|
|
- if $force_writeable;
|
|
- print "rmdir $root\n" if $verbose;
|
|
- if (rmdir $root) {
|
|
- ++$count;
|
|
- }
|
|
- else {
|
|
- carp "Can't remove directory $root: $!";
|
|
- chmod($rp, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
|
|
- or carp("and can't restore permissions to "
|
|
- . sprintf("0%o",$rp) . "\n");
|
|
+sub _rmtree
|
|
+{
|
|
+ my ($path, $prefix, $up, $up_dev, $up_ino, $verbose, $safe) = @_;
|
|
+
|
|
+ my ($dev, $ino, $perm) = lstat $path or do {
|
|
+ return 0;
|
|
+ };
|
|
+ $perm &= 07777;
|
|
+
|
|
+ unless (-d _)
|
|
+ {
|
|
+ my $nperm;
|
|
+ if ($force_writeable) {
|
|
+ # make the file writable
|
|
+ $nperm = $perm | 0600;
|
|
+ unless ($safe or $nperm == $perm or chmod $nperm, $path) {
|
|
+ carp "Can't make file $prefix$path writeable: $!";
|
|
}
|
|
}
|
|
- else {
|
|
- if ($safe &&
|
|
- ($Is_VMS ? !&VMS::Filespec::candelete($root)
|
|
- : !(-l $root || -w $root)))
|
|
- {
|
|
- print "skipped $root\n" if $verbose;
|
|
- next;
|
|
- }
|
|
- chmod $rp | 0600, $root
|
|
- or carp "Can't make file $root writeable: $!"
|
|
- if $force_writeable;
|
|
- print "unlink $root\n" if $verbose;
|
|
- # delete all versions under VMS
|
|
- for (;;) {
|
|
- unless (unlink $root) {
|
|
- carp "Can't unlink file $root: $!";
|
|
- if ($force_writeable) {
|
|
- chmod $rp, $root
|
|
- or carp("and can't restore permissions to "
|
|
- . sprintf("0%o",$rp) . "\n");
|
|
- }
|
|
- last;
|
|
+ print "unlink $prefix$path\n" if $verbose;
|
|
+ unless (unlink $path)
|
|
+ {
|
|
+ carp "Can't remove file $prefix$path ($!)";
|
|
+ if ($force_writeable) {
|
|
+ unless ($safe or $nperm == $perm or chmod $perm, $path) {
|
|
+ carp("and can't restore permissions to "
|
|
+ . sprintf("0%o",$perm) . "\n");
|
|
}
|
|
- ++$count;
|
|
- last unless $Is_VMS && lstat $root;
|
|
}
|
|
+ return 0;
|
|
+ }
|
|
+ return 1;
|
|
+ }
|
|
+
|
|
+ CHDIR: {
|
|
+ last CHDIR if chdir $path;
|
|
+ my $err = $!;
|
|
+ unless ($safe || ($perm & 0100)) {
|
|
+ # might be able to succeed by tweaking the permission
|
|
+ # before we chdir
|
|
+ last CHDIR if chmod(0700, $path) && chdir($path);
|
|
+ }
|
|
+ carp "Can't chdir to $prefix$path ($err)";
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ # avoid a race condition where a directory may be replaced by a
|
|
+ # symlink between the initial lstat and the chdir
|
|
+ my ($new_dev, $new_ino) = stat '.';
|
|
+ unless ("$new_dev:$new_ino" eq "$dev:$ino")
|
|
+ {
|
|
+ croak "Directory $prefix$path changed before chdir, aborting";
|
|
+ }
|
|
+
|
|
+ my $nperm = $perm | 0700;
|
|
+ unless ($safe or $nperm == $perm or chmod $nperm, '.')
|
|
+ {
|
|
+ carp "Can't make directory $prefix$path read+writeable ($!)";
|
|
+ $nperm = $perm;
|
|
+ }
|
|
+
|
|
+ my $count = 0;
|
|
+ if (opendir my $dir, '.')
|
|
+ {
|
|
+ my $entry;
|
|
+ while (defined ($entry = readdir $dir))
|
|
+ {
|
|
+ next if $entry =~ /^\.\.?$/;
|
|
+ $entry =~ /^(.*)$/s; $entry = $1; # untaint
|
|
+ $count += _rmtree($entry, "$prefix$path/", '..', $dev, $ino,
|
|
+ $verbose, $safe);
|
|
}
|
|
+
|
|
+ closedir $dir;
|
|
+ }
|
|
+
|
|
+ # restore directory permissions is required (in case the rmdir
|
|
+ # below fails) now, while we're still in the directory and may do
|
|
+ # so without a race via '.'
|
|
+ unless ($force_writeable or $safe or $nperm == $perm or chmod $perm, '.')
|
|
+ {
|
|
+ carp "Can't restore permissions on directory $prefix$path ($!)";
|
|
+ }
|
|
+
|
|
+ # don't leave the caller in an unexpected directory
|
|
+ unless (chdir $up)
|
|
+ {
|
|
+ croak "Can't return to $up from $prefix$path ($!)";
|
|
+ }
|
|
+
|
|
+ # ensure that a chdir .. didn't take us somewhere other than
|
|
+ # where we expected (see CVE-2002-0435)
|
|
+ unless (($new_dev, $new_ino) = stat '.'
|
|
+ and "$new_dev:$new_ino" eq "$up_dev:$up_ino")
|
|
+ {
|
|
+ croak "Previous directory $up changed since entering $prefix$path";
|
|
+ }
|
|
+
|
|
+ print "rmdir $prefix$path\n" if $verbose;
|
|
+ if (rmdir $path)
|
|
+ {
|
|
+ $count++;
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ carp "Can't remove directory $prefix$path ($!)";
|
|
+ }
|
|
+
|
|
+ return $count;
|
|
+}
|
|
+
|
|
+sub rmtree
|
|
+{
|
|
+ my ($p, $verbose, $safe) = @_;
|
|
+ $p = [] unless defined $p and length $p;
|
|
+ $p = [ $p ] unless ref $p;
|
|
+ my @paths = grep defined && length, @$p;
|
|
+
|
|
+ # default to "unsafe" for non-root (will chmod dirs)
|
|
+ $safe = ($> || $force_writeable) ? 0 : 1 unless defined $safe;
|
|
+
|
|
+ unless (@paths)
|
|
+ {
|
|
+ carp "No root path(s) specified";
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ my $oldpwd = getcwd or do {
|
|
+ carp "Can't fetch initial working directory";
|
|
+ return 0;
|
|
+ };
|
|
+
|
|
+ my ($dev, $ino) = stat '.' or do {
|
|
+ carp "Can't stat initial working directory";
|
|
+ return 0;
|
|
+ };
|
|
+
|
|
+ # untaint
|
|
+ for ($oldpwd) { /^(.*)$/s; $_ = $1 }
|
|
+
|
|
+ my $count = 0;
|
|
+ for my $path (@paths)
|
|
+ {
|
|
+ $count += _rmtree($path, '', $oldpwd, $dev, $ino, $verbose, $safe);
|
|
}
|
|
|
|
$count;
|
|
--- ./lib/autouse.pm.orig 2005-09-22 12:57:33.000000000 +0000
|
|
+++ ./lib/autouse.pm 2006-02-17 14:27:12.000000000 +0000
|
|
@@ -53,7 +53,7 @@ sub import {
|
|
require $pm;
|
|
vet_import $module;
|
|
}
|
|
- no warnings 'redefine';
|
|
+ no warnings qw(redefine prototype);
|
|
*$closure_import_func = \&{"${module}::$closure_func"};
|
|
print "autousing $module; "
|
|
."imported $closure_func as $closure_import_func\n"
|
|
--- ./lib/perl5db.pl.orig 2005-10-29 00:03:21.000000000 +0000
|
|
+++ ./lib/perl5db.pl 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -3362,6 +3362,8 @@ reading another.
|
|
open( OUT, ">&STDOUT" ) # XXX: lost message
|
|
|| &warn("Can't restore DB::OUT");
|
|
}
|
|
+ # tell readline the new OUT handle
|
|
+ $term->Attribs()->{outstream} = *OUT if defined &Term::ReadLine::Gnu::readline;
|
|
next CMD;
|
|
} ## end unless ($piped = open(OUT,...
|
|
|
|
@@ -3484,6 +3486,8 @@ our standard filehandles for input and o
|
|
# if necessary,
|
|
close(SAVEOUT);
|
|
select($selected), $selected = "" unless $selected eq "";
|
|
+ # tell readline the new OUT handle
|
|
+ $term->Attribs()->{outstream} = *OUT if defined &Term::ReadLine::Gnu::readline;
|
|
|
|
# No pipes now.
|
|
$piped = "";
|
|
--- ./lib/unicore/mktables.orig 2005-06-01 08:08:41.000000000 +0000
|
|
+++ ./lib/unicore/mktables 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -141,7 +141,7 @@ foreach my $lib ('To', 'lib',
|
|
map {File::Spec->catdir("lib",$_)}
|
|
qw(gc_sc dt bc hst ea jt lb nt ccc)) {
|
|
next if -d $lib;
|
|
- mkdir $lib, 0755 or die "mkdir '$lib': $!";
|
|
+ mkdir $lib, 0755 or $! =~ /exists/i or die "mkdir '$lib': $!";
|
|
}
|
|
|
|
my $LastUnicodeCodepoint = 0x10FFFF; # As of Unicode 3.1.1.
|
|
--- ./locale.c.orig 2005-09-30 15:25:03.000000000 +0000
|
|
+++ ./locale.c 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -337,9 +337,13 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
|
|
|
|
if (setlocale_failure) {
|
|
char *p;
|
|
+#if 0
|
|
bool locwarn = (printwarn > 1 ||
|
|
(printwarn &&
|
|
(!(p = PerlEnv_getenv("PERL_BADLANG")) || atoi(p))));
|
|
+#else
|
|
+ bool locwarn = 0;
|
|
+#endif
|
|
|
|
if (locwarn) {
|
|
#ifdef LC_ALL
|
|
--- ./t/TEST.orig 2005-10-25 12:59:53.000000000 +0000
|
|
+++ ./t/TEST 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -154,6 +154,7 @@ unless (@ARGV) {
|
|
next if $skip{$extension};
|
|
}
|
|
my $path = File::Spec->catfile($updir, $t);
|
|
+ next unless -e $path;
|
|
push @ARGV, $path;
|
|
$::path_to_name{$path} = $t;
|
|
}
|
|
--- ./t/harness.orig 2005-11-03 02:10:50.000000000 +0000
|
|
+++ ./t/harness 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -104,7 +104,8 @@ if (@ARGV) {
|
|
# XXX Do I want to warn that I'm skipping these?
|
|
next if $skip{$extension};
|
|
}
|
|
- push @tests, File::Spec->catfile($updir, $test);
|
|
+ my $t = File::Spec->catfile($updir, $test);
|
|
+ push @tests, $t if -e $t;
|
|
}
|
|
}
|
|
close MANI;
|
|
--- ./t/lib/h2ph.pht.orig 2004-12-27 19:55:34.000000000 +0000
|
|
+++ ./t/lib/h2ph.pht 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -15,7 +15,7 @@ unless(defined(&ERROR)) {
|
|
}' unless defined(&ERROR);
|
|
}
|
|
unless(defined(&_H2PH_H_)) {
|
|
- eval 'sub _H2PH_H_ () {1;}' unless defined(&_H2PH_H_);
|
|
+ eval 'sub _H2PH_H_ {1;}' unless defined(&_H2PH_H_);
|
|
# "$Revision h2ph.h,v 1.0 98/05/04 20:42:14 billy $"
|
|
undef(&MAX) if defined(&MAX);
|
|
eval 'sub MAX {
|
|
@@ -33,19 +33,19 @@ unless(defined(&_H2PH_H_)) {
|
|
elsif(!(defined (defined(&__SOMETHING_REALLY_REALLY_IMPORTANT) ? &__SOMETHING_REALLY_REALLY_IMPORTANT : 0))) {
|
|
die("Nup, can't go on");
|
|
} else {
|
|
- eval 'sub EVERYTHING_IS_OK () {1;}' unless defined(&EVERYTHING_IS_OK);
|
|
+ eval 'sub EVERYTHING_IS_OK {1;}' unless defined(&EVERYTHING_IS_OK);
|
|
}
|
|
undef(&WHATEVER) if defined(&WHATEVER);
|
|
if((!((defined (defined(&__SOMETHING_TRIVIAL) ? &__SOMETHING_TRIVIAL : 0) && defined (defined(&__SOMETHING_LESS_SO) ? &__SOMETHING_LESS_SO : 0))) || defined (defined(&__SOMETHING_OVERPOWERING) ? &__SOMETHING_OVERPOWERING : 0))) {
|
|
- eval 'sub WHATEVER () {6;}' unless defined(&WHATEVER);
|
|
+ eval 'sub WHATEVER {6;}' unless defined(&WHATEVER);
|
|
}
|
|
elsif(!(defined (defined(&__SOMETHING_TRIVIAL) ? &__SOMETHING_TRIVIAL : 0)) ) {
|
|
- eval 'sub WHATEVER () {7;}' unless defined(&WHATEVER);
|
|
+ eval 'sub WHATEVER {7;}' unless defined(&WHATEVER);
|
|
}
|
|
elsif(!(defined (defined(&__SOMETHING_LESS_SO) ? &__SOMETHING_LESS_SO : 0)) ) {
|
|
- eval 'sub WHATEVER () {8;}' unless defined(&WHATEVER);
|
|
+ eval 'sub WHATEVER {8;}' unless defined(&WHATEVER);
|
|
} else {
|
|
- eval 'sub WHATEVER () {1000;}' unless defined(&WHATEVER);
|
|
+ eval 'sub WHATEVER {1000;}' unless defined(&WHATEVER);
|
|
}
|
|
require 'sys/socket.ph';
|
|
require 'sys/ioctl.ph';
|
|
@@ -71,21 +71,21 @@ unless(defined(&_H2PH_H_)) {
|
|
eval("sub Fri () { 5; }") unless defined(&Fri);
|
|
eval("sub Sat () { 6; }") unless defined(&Sat);
|
|
unless(defined(&_SOMETHING_TRIGRAPHIC)) {
|
|
- eval 'sub _SOMETHING_TRIGRAPHIC () {1;}' unless defined(&_SOMETHING_TRIGRAPHIC);
|
|
- eval 'sub SOMETHING_ELSE_TRIGRAPHIC_0 () {"|";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_0);
|
|
- eval 'sub SOMETHING_ELSE_TRIGRAPHIC_1 () {"^";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_1);
|
|
- eval 'sub SOMETHING_ELSE_TRIGRAPHIC_2 () {"[";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_2);
|
|
- eval 'sub SOMETHING_ELSE_TRIGRAPHIC_3 () {"]";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_3);
|
|
- eval 'sub SOMETHING_ELSE_TRIGRAPHIC_4 () {"~0";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_4);
|
|
- eval 'sub SOMETHING_ELSE_TRIGRAPHIC_5 () {"\\ ";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_5);
|
|
- eval 'sub SOMETHING_ELSE_TRIGRAPHIC_6 () {"{";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_6);
|
|
- eval 'sub SOMETHING_ELSE_TRIGRAPHIC_7 () {"#";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_7);
|
|
- eval 'sub SOMETHING_ELSE_TRIGRAPHIC_8 () {"}";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_8);
|
|
+ eval 'sub _SOMETHING_TRIGRAPHIC {1;}' unless defined(&_SOMETHING_TRIGRAPHIC);
|
|
+ eval 'sub SOMETHING_ELSE_TRIGRAPHIC_0 {"|";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_0);
|
|
+ eval 'sub SOMETHING_ELSE_TRIGRAPHIC_1 {"^";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_1);
|
|
+ eval 'sub SOMETHING_ELSE_TRIGRAPHIC_2 {"[";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_2);
|
|
+ eval 'sub SOMETHING_ELSE_TRIGRAPHIC_3 {"]";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_3);
|
|
+ eval 'sub SOMETHING_ELSE_TRIGRAPHIC_4 {"~0";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_4);
|
|
+ eval 'sub SOMETHING_ELSE_TRIGRAPHIC_5 {"\\ ";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_5);
|
|
+ eval 'sub SOMETHING_ELSE_TRIGRAPHIC_6 {"{";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_6);
|
|
+ eval 'sub SOMETHING_ELSE_TRIGRAPHIC_7 {"#";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_7);
|
|
+ eval 'sub SOMETHING_ELSE_TRIGRAPHIC_8 {"}";}' unless defined(&SOMETHING_ELSE_TRIGRAPHIC_8);
|
|
}
|
|
if(1) {
|
|
}
|
|
eval("sub flim () { 0; }") unless defined(&flim);
|
|
eval("sub flam () { 1; }") unless defined(&flam);
|
|
- eval 'sub multiline () {"multilinestring";}' unless defined(&multiline);
|
|
+ eval 'sub multiline {"multilinestring";}' unless defined(&multiline);
|
|
}
|
|
1;
|
|
--- ./t/op/numconvert.t.orig 2001-08-29 18:23:58.000000000 +0000
|
|
+++ ./t/op/numconvert.t 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -46,7 +46,7 @@ my $max_chain = $ENV{PERL_TEST_NUMCONVER
|
|
|
|
# Bulk out if unsigned type is hopelessly wrong:
|
|
my $max_uv1 = ~0;
|
|
-my $max_uv2 = sprintf "%u", $max_uv1 ** 6; # 6 is an arbitrary number here
|
|
+my $max_uv2 = sprintf "%lu", $max_uv1 ** 6; # 6 is an arbitrary number here
|
|
my $big_iv = do {use integer; $max_uv1 * 16}; # 16 is an arbitrary number here
|
|
my $max_uv_less3 = $max_uv1 - 3;
|
|
|
|
--- ./utils/h2ph.PL.orig 2006-01-12 22:55:04.000000000 +0000
|
|
+++ ./utils/h2ph.PL 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -173,11 +173,13 @@ while (defined (my $file = next_file()))
|
|
if ($t ne '') {
|
|
$new =~ s/(['\\])/\\$1/g; #']);
|
|
|
|
+ # Can't use () prototype because macro
|
|
+ # redefinitions would produce a warning
|
|
if ($opt_h) {
|
|
- print OUT $t,"eval \"\\n#line $eval_index $outfile\\n\" . 'sub $name () {",$new,";}' unless defined(\&$name);\n";
|
|
+ print OUT $t,"eval \"\\n#line $eval_index $outfile\\n\" . 'sub $name {",$new,";}' unless defined(\&$name);\n";
|
|
$eval_index++;
|
|
} else {
|
|
- print OUT $t,"eval 'sub $name () {",$new,";}' unless defined(\&$name);\n";
|
|
+ print OUT $t,"eval 'sub $name {",$new,";}' unless defined(\&$name);\n";
|
|
}
|
|
} else {
|
|
# Shunt around such directives as `#define FOO FOO':
|
|
--- ./utils/perlbug.PL.orig 2006-01-03 19:07:41.000000000 +0000
|
|
+++ ./utils/perlbug.PL 2006-02-01 11:31:22.000000000 +0000
|
|
@@ -906,6 +906,7 @@ sendout:
|
|
print SENDMAIL "Cc: $cc\n" if $cc;
|
|
print SENDMAIL "Reply-To: $from\n" if $from;
|
|
print SENDMAIL "Message-Id: $messageid\n" if $messageid;
|
|
+ print SENDMAIL "X-Webfrontend: perlbug\n";
|
|
print SENDMAIL "\n\n";
|
|
open(REP, "<$filename") or die "Couldn't open `$filename': $!\n";
|
|
while (<REP>) { print SENDMAIL $_ }
|