summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>2000-11-21 21:59:40 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>2000-11-21 21:59:40 +0000
commit778e6c4e916dc84b9dcf48eba0d7d07e9d98e21b (patch)
tree4ef1f2819debb679a5da5339eebaa5ff6e40befa
parent83b075c35b61a28ca7e2629bb5d6e26f9e0354fe (diff)
parentfae6793e446a46318496910a9e0f1336f815c0bc (diff)
downloadperl-778e6c4e916dc84b9dcf48eba0d7d07e9d98e21b.tar.gz
Integrate mainline
p4raw-id: //depot/perlio@7798
-rw-r--r--Changes100
-rwxr-xr-xConfigure257
-rw-r--r--Porting/Glossary9
-rw-r--r--Porting/config.sh5
-rw-r--r--Porting/config_H13
-rw-r--r--config_h.SH11
-rw-r--r--configure.com1
-rw-r--r--doio.c8
-rw-r--r--embed.h18
-rwxr-xr-xembed.pl11
-rw-r--r--epoc/config.sh1
-rw-r--r--handy.h11
-rw-r--r--makedef.pl21
-rw-r--r--patchlevel.h2
-rw-r--r--perlio.c6
-rw-r--r--perlio.h2
-rw-r--r--perlsdio.h13
-rw-r--r--pod/perltoc.pod114
-rw-r--r--proto.h11
-rw-r--r--uconfig.h11
-rwxr-xr-xuconfig.sh1
-rw-r--r--vos/config.alpha.def1
-rw-r--r--vos/config.alpha.h11
-rw-r--r--vos/config.ga.def1
-rw-r--r--vos/config.ga.h11
-rw-r--r--win32/config.bc1
-rw-r--r--win32/config.gc1
-rw-r--r--win32/config.vc1
28 files changed, 472 insertions, 181 deletions
diff --git a/Changes b/Changes
index 925d600e40..74a68dcfdd 100644
--- a/Changes
+++ b/Changes
@@ -32,6 +32,106 @@ Version v5.7.0 Development release working toward v5.8
--------------
____________________________________________________________________________
+[ 7794] By: jhi on 2000/11/21 18:56:34
+ Log: Subject: PerlIO_apply_layers prototype (was Re: [PATCH: perl@7777] add system locale testing for VMS)
+ From: "Craig A. Berry" <craigberry@mac.com>
+ Date: Mon, 20 Nov 2000 20:27:06 -0600
+ Message-Id: <p04330101b63f8baf25a2@[172.16.52.1]>
+
+ A cut-and-pasto.
+ Branch: perl
+ ! perlio.h
+____________________________________________________________________________
+[ 7793] By: jhi on 2000/11/21 18:54:41
+ Log: Subject: [PATCH bleadperl] Re: Not OK: perl5.7.0 +DEVEL7706 +Duseperlio on AIX4.[23]
+ From: Dominic Dunlop <domo@computer.org>
+ Date: Mon, 20 Nov 2000 18:55:29 +0100
+ Message-Id: <p04320403b63b2c750dce@[192.168.1.4]>
+
+ va_copy() and the need of it.
+ See <http://wwwold.dkuug.dk/JTC1/SC22/WG14/www/docs/n907.ps>.
+ Branch: metaconfig/U/perl
+ + need_va_copy.U
+ Branch: perl
+ ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+ ! config_h.SH configure.com epoc/config.sh handy.h perlio.c
+ ! pod/perltoc.pod uconfig.h uconfig.sh vos/config.alpha.def
+ ! vos/config.alpha.h vos/config.ga.def vos/config.ga.h
+ ! win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[ 7792] By: jhi on 2000/11/21 17:04:10
+ Log: Integrate scope.h@7790 from perlio, works better with multiplicity.
+ Branch: perl
+ !> scope.h
+____________________________________________________________________________
+[ 7791] By: jhi on 2000/11/21 17:01:16
+ Log: Export the SOCKS workaround symbols only if necessary.
+ Branch: perl
+ ! doio.c embed.h embed.pl makedef.pl perlsdio.h proto.h
+____________________________________________________________________________
+[ 7787] By: jhi on 2000/11/20 22:44:04
+ Log: Subject: [PATCH: perl@7777] add system locale testing for VMS
+ From: Peter Prymmer <pvhp@forte.com>
+ Date: Mon, 20 Nov 2000 12:56:52 -0800 (PST)
+ Message-ID: <Pine.OSF.4.10.10011201244390.376086-100000@aspara.forte.com>
+ Branch: perl
+ ! t/pragma/locale.t
+____________________________________________________________________________
+[ 7786] By: jhi on 2000/11/20 22:29:10
+ Log: Subject: DOC PATCH 5.6.0 perlreftut
+ From: mjd@plover.com
+ Date: 20 Nov 2000 19:45:06 -0000
+ Message-ID: <20001120194506.9505.qmail@plover.com>
+ Branch: perl
+ ! pod/perlreftut.pod
+____________________________________________________________________________
+[ 7785] By: jhi on 2000/11/20 22:27:44
+ Log: Subject: [ID 20001120.010] typo in lib/Cwd.pm broke Cwd::chdir
+ From: David Dyck <dcd@tc.fluke.com>
+ Date: Mon, 20 Nov 2000 11:43:40 -0800
+ Message-Id: <200011201943.LAA08451@dd.tc.fluke.com>
+ Branch: perl
+ ! lib/Cwd.pm
+____________________________________________________________________________
+[ 7784] By: jhi on 2000/11/20 22:23:21
+ Log: Subject: [PATCH 5.7.0] lexicals not recognized in a run-time (?{})
+ Date: Mon, 20 Nov 2000 17:06:10 -0500
+ To: Mailing list Perl5 <perl5-porters@perl.org>
+ Message-ID: <20001120170609.A11780@monk.mps.ohio-state.edu>
+ Branch: perl
+ ! pp_ctl.c t/op/pat.t
+____________________________________________________________________________
+[ 7783] By: jhi on 2000/11/20 22:11:18
+ Log: Subject: [PATCH] doop.c - UTF8 tr///
+ From: Simon Cozens <simon@cozens.net>
+ Date: Sat, 18 Nov 2000 18:49:30 +0000
+ Message-ID: <20001118184930.A31687@pembro4.pmb.ox.ac.uk>
+
+ Subject: Re: [PATCH] doop.c - UTF8 tr///
+ From: Simon Cozens <simon@cozens.net>
+ Date: Mon, 20 Nov 2000 20:45:22 +0000
+ Message-ID: <20001120204522.A26042@pembro4.pmb.ox.ac.uk>
+
+ Make tr on UTF-8 better but still not correct.
+ Branch: perl
+ ! doop.c
+____________________________________________________________________________
+[ 7782] By: jhi on 2000/11/20 22:02:16
+ Log: Remove the shared object before attempting to create
+ (by linking) a new one. E.g. in AIX not removing
+ becomes quite painful if one tries to do more than one
+ build in the same tree (an interrupted build, for example),
+ since the AIX' shared dynaloader seemingly keeps the shared
+ objects open and therefore 'busy' for quite a while, even when
+ nobody is using the objects, leading into link failures.
+ Branch: perl
+ ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[ 7777] By: jhi on 2000/11/20 16:08:49
+ Log: Update Changes.
+ Branch: perl
+ ! Changes patchlevel.h
+____________________________________________________________________________
[ 7776] By: jhi on 2000/11/20 15:27:56
Log: Assume SOCKS is broken in all 64bitall platforms, not just Solaris.
This may be overly harsh but until proven otherwise, we think this
diff --git a/Configure b/Configure
index 5ea281a108..f4709a2026 100755
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
#
-# Generated on Thu Nov 16 16:33:41 EET 2000 [metaconfig 3.0 PL70]
+# Generated on Tue Nov 21 20:33:35 EET 2000 [metaconfig 3.0 PL70]
# (with additional metaconfig patches by perlbug@perl.org)
cat >/tmp/c1$$ <<EOF
@@ -780,6 +780,7 @@ d_eofnblk=''
eagain=''
o_nonblock=''
rd_nodata=''
+need_va_copy=''
netdb_hlen_type=''
netdb_host_type=''
netdb_name_type=''
@@ -13461,6 +13462,161 @@ rp="What is the type used for file modes for system calls (e.g. fchmod())?"
set mode_t modetype int stdio.h sys/types.h
eval $typedef_ask
+: see if stdarg is available
+echo " "
+if $test `./findhdr stdarg.h`; then
+ echo "<stdarg.h> found." >&4
+ valstd="$define"
+else
+ echo "<stdarg.h> NOT found." >&4
+ valstd="$undef"
+fi
+
+: see if varags is available
+echo " "
+if $test `./findhdr varargs.h`; then
+ echo "<varargs.h> found." >&4
+else
+ echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
+fi
+
+: set up the varargs testing programs
+$cat > varargs.c <<EOP
+#ifdef I_STDARG
+#include <stdarg.h>
+#endif
+#ifdef I_VARARGS
+#include <varargs.h>
+#endif
+
+#ifdef I_STDARG
+int f(char *p, ...)
+#else
+int f(va_alist)
+va_dcl
+#endif
+{
+ va_list ap;
+#ifndef I_STDARG
+ char *p;
+#endif
+#ifdef I_STDARG
+ va_start(ap,p);
+#else
+ va_start(ap);
+ p = va_arg(ap, char *);
+#endif
+ va_end(ap);
+}
+EOP
+$cat > varargs <<EOP
+$startsh
+if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
+ echo "true"
+else
+ echo "false"
+fi
+$rm -f varargs$_o
+EOP
+chmod +x varargs
+
+: now check which varargs header should be included
+echo " "
+i_varhdr=''
+case "$valstd" in
+"$define")
+ if `./varargs I_STDARG`; then
+ val='stdarg.h'
+ elif `./varargs I_VARARGS`; then
+ val='varargs.h'
+ fi
+ ;;
+*)
+ if `./varargs I_VARARGS`; then
+ val='varargs.h'
+ fi
+ ;;
+esac
+case "$val" in
+'')
+echo "I could not find the definition for va_dcl... You have problems..." >&4
+ val="$undef"; set i_stdarg; eval $setvar
+ val="$undef"; set i_varargs; eval $setvar
+ ;;
+*)
+ set i_varhdr
+ eval $setvar
+ case "$i_varhdr" in
+ stdarg.h)
+ val="$define"; set i_stdarg; eval $setvar
+ val="$undef"; set i_varargs; eval $setvar
+ ;;
+ varargs.h)
+ val="$undef"; set i_stdarg; eval $setvar
+ val="$define"; set i_varargs; eval $setvar
+ ;;
+ esac
+ echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
+esac
+$rm -f varargs*
+
+: see if we need va_copy
+echo " "
+case "$i_stdarg" in
+"$define")
+ $cat >try.c <<EOCP
+#include <stdarg.h>
+#include <stdio.h>
+
+int
+ivfprintf(FILE *f, const char *fmt, va_list *valp)
+{
+ return vfprintf(f, fmt, *valp);
+}
+
+int
+myvfprintf(FILE *f, const char *fmt, va_list val)
+{
+ return ivfprintf(f, fmt, &val);
+}
+
+int
+myprintf(char *fmt, ...)
+{
+ va_list val;
+ va_start(val, fmt);
+ return myvfprintf(stdout, fmt, val);
+}
+
+int
+main(int ac, char **av)
+{
+ myprintf("%s%cs all right, then\n", "that", '\'');
+ exit(0);
+}
+EOCP
+ set try
+ if eval $compile_ok && ./try >/dev/null; then
+ case "`./try`" in
+ "that's all right, then")
+ okay=yes
+ ;;
+ esac
+ fi
+ case "$okay" in
+ yes) echo "It seems that you don't need va_copy()." >&4
+ need_va_copy="$undef"
+ ;;
+ *) echo "It seems that va_copy() or similar will be needed." >&4
+ need_va_copy="$define"
+ ;;
+ esac
+ $rm -f try.* core core.* *.core *.core.*
+ ;;
+*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
+ ;;
+esac
+
: define a fucntion to check prototypes
$cat > protochk <<EOSH
$startsh
@@ -14896,104 +15052,6 @@ val=$val3; set i_termios; eval $setvar
set shadow.h i_shadow
eval $inhdr
-: see if stdarg is available
-echo " "
-if $test `./findhdr stdarg.h`; then
- echo "<stdarg.h> found." >&4
- valstd="$define"
-else
- echo "<stdarg.h> NOT found." >&4
- valstd="$undef"
-fi
-
-: see if varags is available
-echo " "
-if $test `./findhdr varargs.h`; then
- echo "<varargs.h> found." >&4
-else
- echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
-fi
-
-: set up the varargs testing programs
-$cat > varargs.c <<EOP
-#ifdef I_STDARG
-#include <stdarg.h>
-#endif
-#ifdef I_VARARGS
-#include <varargs.h>
-#endif
-
-#ifdef I_STDARG
-int f(char *p, ...)
-#else
-int f(va_alist)
-va_dcl
-#endif
-{
- va_list ap;
-#ifndef I_STDARG
- char *p;
-#endif
-#ifdef I_STDARG
- va_start(ap,p);
-#else
- va_start(ap);
- p = va_arg(ap, char *);
-#endif
- va_end(ap);
-}
-EOP
-$cat > varargs <<EOP
-$startsh
-if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
- echo "true"
-else
- echo "false"
-fi
-$rm -f varargs$_o
-EOP
-chmod +x varargs
-
-: now check which varargs header should be included
-echo " "
-i_varhdr=''
-case "$valstd" in
-"$define")
- if `./varargs I_STDARG`; then
- val='stdarg.h'
- elif `./varargs I_VARARGS`; then
- val='varargs.h'
- fi
- ;;
-*)
- if `./varargs I_VARARGS`; then
- val='varargs.h'
- fi
- ;;
-esac
-case "$val" in
-'')
-echo "I could not find the definition for va_dcl... You have problems..." >&4
- val="$undef"; set i_stdarg; eval $setvar
- val="$undef"; set i_varargs; eval $setvar
- ;;
-*)
- set i_varhdr
- eval $setvar
- case "$i_varhdr" in
- stdarg.h)
- val="$define"; set i_stdarg; eval $setvar
- val="$undef"; set i_varargs; eval $setvar
- ;;
- varargs.h)
- val="$undef"; set i_stdarg; eval $setvar
- val="$define"; set i_varargs; eval $setvar
- ;;
- esac
- echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
-esac
-$rm -f varargs*
-
: see if stddef is available
set stddef.h i_stddef
eval $inhdr
@@ -16047,6 +16105,7 @@ mydomain='$mydomain'
myhostname='$myhostname'
myuname='$myuname'
n='$n'
+need_va_copy='$need_va_copy'
netdb_hlen_type='$netdb_hlen_type'
netdb_host_type='$netdb_host_type'
netdb_name_type='$netdb_name_type'
diff --git a/Porting/Glossary b/Porting/Glossary
index 2233779fdb..c4ce3de565 100644
--- a/Porting/Glossary
+++ b/Porting/Glossary
@@ -2740,6 +2740,15 @@ n (n.U):
command to suppress newline. Otherwise it is null. Correct usage is
$echo $n "prompt for a question: $c".
+need_va_copy (need_va_copy.U):
+ This symbol, if defined, indicates that the system stores
+ the variable argument list datatype, va_list, in a format
+ that cannot be copied by simple assignment, so that some
+ other means must be used when copying is required.
+ As such systems vary in their provision (or non-provision)
+ of copying mechanisms, handy.h defines a platform-
+ independent macro, Perl_va_copy(src, dst), to do the job.
+
netdb_hlen_type (netdbtype.U):
This variable holds the type used for the 2nd argument to
gethostbyaddr(). Usually, this is int or size_t or unsigned.
diff --git a/Porting/config.sh b/Porting/config.sh
index 9e0e300455..2f760ae8a0 100644
--- a/Porting/config.sh
+++ b/Porting/config.sh
@@ -8,7 +8,7 @@
# Package name : perl5
# Source directory : /m/fs/work/work/permanent/perl/pp4/perl
-# Configuration time: Thu Nov 16 16:43:36 EET 2000
+# Configuration time: Tue Nov 21 20:44:07 EET 2000
# Configured by : jhi
# Target system : osf1 alpha.hut.fi v4.0 878 alpha
@@ -62,7 +62,7 @@ ccsymbols='__alpha=1 __LANGUAGE_C__=1 __osf__=1 __unix__=1 _LONGLONG=1 _SYSTYPE_
ccversion='V5.6-082'
cf_by='jhi'
cf_email='yourname@yourhost.yourplace.com'
-cf_time='Thu Nov 16 16:43:36 EET 2000'
+cf_time='Tue Nov 21 20:44:07 EET 2000'
charsize='1'
chgrp=''
chmod=''
@@ -608,6 +608,7 @@ mydomain='.yourplace.com'
myhostname='yourhost'
myuname='osf1 alpha.hut.fi v4.0 878 alpha '
n=''
+need_va_copy='undef'
netdb_hlen_type='int'
netdb_host_type='const char *'
netdb_name_type='const char *'
diff --git a/Porting/config_H b/Porting/config_H
index 59537cba0b..10130c2a6d 100644
--- a/Porting/config_H
+++ b/Porting/config_H
@@ -17,7 +17,7 @@
/*
* Package name : perl5
* Source directory : /m/fs/work/work/permanent/perl/pp4/perl
- * Configuration time: Thu Nov 16 16:43:36 EET 2000
+ * Configuration time: Tue Nov 21 20:44:07 EET 2000
* Configured by : jhi
* Target system : osf1 alpha.hut.fi v4.0 878 alpha
*/
@@ -3220,4 +3220,15 @@
*/
#define HAS_SBRK_PROTO /**/
+/* NEED_VA_COPY:
+ * This symbol, if defined, indicates that the system stores
+ * the variable argument list datatype, va_list, in a format
+ * that cannot be copied by simple assignment, so that some
+ * other means must be used when copying is required.
+ * As such systems vary in their provision (or non-provision)
+ * of copying mechanisms, handy.h defines a platform-
+ * independent macro, Perl_va_copy(src, dst), to do the job.
+ */
+/*#define NEED_VA_COPY / **/
+
#endif
diff --git a/config_h.SH b/config_h.SH
index f912151186..6483ebecf9 100644
--- a/config_h.SH
+++ b/config_h.SH
@@ -3240,5 +3240,16 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
*/
#$d_sbrkproto HAS_SBRK_PROTO /**/
+/* NEED_VA_COPY:
+ * This symbol, if defined, indicates that the system stores
+ * the variable argument list datatype, va_list, in a format
+ * that cannot be copied by simple assignment, so that some
+ * other means must be used when copying is required.
+ * As such systems vary in their provision (or non-provision)
+ * of copying mechanisms, handy.h defines a platform-
+ * independent macro, Perl_va_copy(src, dst), to do the job.
+ */
+#$need_va_copy NEED_VA_COPY /**/
+
#endif
!GROK!THIS!
diff --git a/configure.com b/configure.com
index 094650312b..52464fef6a 100644
--- a/configure.com
+++ b/configure.com
@@ -5190,6 +5190,7 @@ $ WC "multiarch='undef'"
$ WC "mydomain='" + mydomain + "'"
$ WC "myhostname='" + myhostname + "'"
$ WC "myuname='" + myuname + "'"
+$ WC "need_va_copy='undef'"
$ WC "netdb_hlen_type='" + netdb_hlen_type + "'"
$ WC "netdb_host_type='" + netdb_host_type + "'"
$ WC "netdb_name_type='" + netdb_name_type + "'"
diff --git a/doio.c b/doio.c
index c1e17a4069..1fdedc2f07 100644
--- a/doio.c
+++ b/doio.c
@@ -2089,18 +2089,20 @@ Perl_do_shmio(pTHX_ I32 optype, SV **mark, SV **sp)
#endif /* SYSV IPC */
+#ifdef SOCKS_64BIT_BUG
+
/**
** getc and ungetc wrappers for the 64 bit problems with SOCKS 5 support
** Workaround to the problem, that SOCKS maps a socket 'getc' to revc
** without checking the ungetc buffer.
**/
-#ifdef SOCKS_64BIT_BUG
+
static S64_IOB *s64_buffer = (S64_IOB *) NULL;
/* get a buffered stream pointer */
-static S64_IOB *_s64_get_buffer( PerlIO *f) {
+static S64_IOB *S_s64_get_buffer( PerlIO *fp) {
S64_IOB *ptr = s64_buffer;
- while( ptr && ptr->fp != f)
+ while( ptr && ptr->fp != fp)
ptr = ptr->next;
return( ptr);
}
diff --git a/embed.h b/embed.h
index 27f5fd2852..b7db7c0869 100644
--- a/embed.h
+++ b/embed.h
@@ -193,7 +193,8 @@
#define do_vecget Perl_do_vecget
#define do_vecset Perl_do_vecset
#define do_vop Perl_do_vop
-#ifdef SOCKS_64BIT_BUG
+#if defined(SOCKS_64BIT_BUG)
+#define s64_get_buffer S_s64_get_buffer
#endif
#define dofile Perl_dofile
#define dowantarray Perl_dowantarray
@@ -1663,7 +1664,8 @@
#define do_vecget(a,b,c) Perl_do_vecget(aTHX_ a,b,c)
#define do_vecset(a) Perl_do_vecset(aTHX_ a)
#define do_vop(a,b,c,d) Perl_do_vop(aTHX_ a,b,c,d)
-#ifdef SOCKS_64BIT_BUG
+#if defined(SOCKS_64BIT_BUG)
+#define s64_get_buffer(a) S_s64_get_buffer(aTHX_ a)
#endif
#define dofile(a) Perl_dofile(aTHX_ a)
#define dowantarray() Perl_dowantarray(aTHX)
@@ -3259,13 +3261,15 @@
#define do_vecset Perl_do_vecset
#define Perl_do_vop CPerlObj::Perl_do_vop
#define do_vop Perl_do_vop
-#ifdef SOCKS_64BIT_BUG
-#define do_getc Perl_do_getc
-#define do_ungetc Perl_do_ungetc
-#define do_fread Perl_do_fread
-#define do_s64_delete_buffer Perl_do_s64_delete_buffer
+#if defined(SOCKS_64BIT_BUG)
+#define S_s64_get_buffer CPerlObj::S_s64_get_buffer
+#define s64_get_buffer S_s64_get_buffer
#define do_s64_tell Perl_do_s64_tell
+#define do_s64_fread Perl_do_s64_fread
+#define do_s64_getc Perl_do_s64_getc
#define do_s64_seek Perl_do_s64_seek
+#define do_s64_ungetc Perl_do_s64_ungetc
+#define do_s64_delete_buffer Perl_do_s64_delete_buffer
#endif
#define Perl_dofile CPerlObj::Perl_dofile
#define dofile Perl_dofile
diff --git a/embed.pl b/embed.pl
index d1c31f271b..498ab5c35b 100755
--- a/embed.pl
+++ b/embed.pl
@@ -1505,13 +1505,14 @@ p |I32 |do_trans |SV* sv
p |UV |do_vecget |SV* sv|I32 offset|I32 size
p |void |do_vecset |SV* sv
p |void |do_vop |I32 optype|SV* sv|SV* left|SV* right
-#ifdef SOCKS_64BIT_BUG
-Ajnop |int |do_getc |PerlIO* fp
-Ajnop |int |do_ungetc |int ch|PerlIO* fp
-Ajnop |SSize_t|do_fread |void *buf|SSize_t count|PerlIO* fp
-Ajnop |void |do_s64_delete_buffer|PerlIO* fp
+#if defined(SOCKS_64BIT_BUG)
+s |S64_IOB*|s64_get_buffer|PerlIO* fp
Ajnop |Off_t |do_s64_tell |PerlIO* fp
+Ajnop |SSize_t|do_s64_fread |void *buf|SSize_t count|PerlIO* fp
+Ajnop |int |do_s64_getc |PerlIO* fp
Ajnop |int |do_s64_seek |PerlIO* fp|Off_t pos|int whence
+Ajnop |int |do_s64_ungetc |int ch|PerlIO* fp
+Ajnop |void |do_s64_delete_buffer|PerlIO* fp
#endif
p |OP* |dofile |OP* term
Ap |I32 |dowantarray
diff --git a/epoc/config.sh b/epoc/config.sh
index 9595c0cd92..2ea89c17a2 100644
--- a/epoc/config.sh
+++ b/epoc/config.sh
@@ -573,6 +573,7 @@ mydomain='.gmx.de'
myhostname='dragon'
myuname=''
n='-n'
+need_va_copy='undef'
netdb_hlen_type='int'
netdb_host_type='const char *'
netdb_name_type='const char *'
diff --git a/handy.h b/handy.h
index b3912a4483..32cab66118 100644
--- a/handy.h
+++ b/handy.h
@@ -623,3 +623,14 @@ extern long lastxycount[MAXXCOUNT][MAXYCOUNT];
#else
#define StructCopy(s,d,t) Copy(s,d,1,t)
#endif
+
+#ifdef NEED_VA_COPY
+# ifdef va_copy
+# define Perl_va_copy(s, d) va_copy(d, s)
+# elif defined(__va_copy)
+# define Perl_va_copy(s, d) __va_copy(d, s)
+# else
+# define Perl_va_copy(s, d) Copy(s, d, 1, va_list)
+# endif
+#endif
+
diff --git a/makedef.pl b/makedef.pl
index e576245831..bf43e665b2 100644
--- a/makedef.pl
+++ b/makedef.pl
@@ -88,7 +88,7 @@ unless ($PLATFORM eq 'win32') {
}
if ($PLATFORM eq 'os2') {
$CONFIG_ARGS = $1 if /^(?:config_args)='(.+)'$/;
- $ARCHNAME = $1 if /^(?:archname)='(.+)'$/;
+ $ARCHNAME = $1 if /^(?:archname)='(.+)'$/;
}
}
close(CFG);
@@ -97,12 +97,9 @@ unless ($PLATFORM eq 'win32') {
open(CFG,$config_h) || die "Cannot open $config_h: $!\n";
while (<CFG>) {
$define{$1} = 1 if /^\s*#\s*define\s+(MYMALLOC)\b/;
- $define{$1} = 1 if /^\s*#\s*define\s+(USE_5005THREADS)\b/;
- $define{$1} = 1 if /^\s*#\s*define\s+(USE_ITHREADS)\b/;
- $define{$1} = 1 if /^\s*#\s*define\s+(USE_PERLIO)\b/;
$define{$1} = 1 if /^\s*#\s*define\s+(MULTIPLICITY)\b/;
- $define{$1} = 1 if /^\s*#\s*define\s+(PERL_IMPLICIT_SYS)\b/;
- $define{$1} = 1 if /^\s*#\s*define\s+(PERL_BINCOMPAT_5005)\b/;
+ $define{$1} = 1 if /^\s*#\s*define\s+(PERL_\w+)\b/;
+ $define{$1} = 1 if /^\s*#\s*define\s+(USE_\w+)\b/;
}
close(CFG);
@@ -480,6 +477,18 @@ unless ($define{'FAKE_THREADS'}) {
skip_symbols [qw(PL_curthr)];
}
+# All quad int platforms are assumed to have broken SOCKS
+unless ($define{USE_SOCKS} && $define{USE_64_BIT_ALL}) {
+ skip_symbols [qw(
+ Perl_do_s64_fread
+ Perl_do_s64_getc
+ Perl_do_s64_delete_buffer
+ Perl_do_s64_seek
+ Perl_do_s64_tell
+ Perl_do_s64_tell
+ )];
+}
+
sub readvar {
my $file = shift;
my $proc = shift || sub { "PL_$_[2]" };
diff --git a/patchlevel.h b/patchlevel.h
index 5a6a9e14ad..03cd9dc076 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -70,7 +70,7 @@
#if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT)
static char *local_patches[] = {
NULL
- ,"DEVEL7776"
+ ,"DEVEL7794"
,NULL
};
diff --git a/perlio.c b/perlio.c
index 865e60e6a5..5df3d2de6b 100644
--- a/perlio.c
+++ b/perlio.c
@@ -2371,7 +2371,13 @@ PerlIO_vprintf(PerlIO *f, const char *fmt, va_list ap)
SV *sv = newSVpvn("",0);
char *s;
STRLEN len;
+#ifdef NEED_VA_COPY
+ va_list apc;
+ Perl_va_copy(ap, apc);
+ sv_vcatpvf(sv, fmt, &apc);
+#else
sv_vcatpvf(sv, fmt, &ap);
+#endif
s = SvPV(sv,len);
return PerlIO_write(f,s,len);
}
diff --git a/perlio.h b/perlio.h
index 76fff3840a..8cb4f7ed06 100644
--- a/perlio.h
+++ b/perlio.h
@@ -308,7 +308,7 @@ extern PerlIO * PerlIO_fdupopen (PerlIO *);
#ifndef PerlIO_isutf8
extern int PerlIO_isutf8 (PerlIO *);
#endif
-#ifndef PerlIO_isutf8
+#ifndef PerlIO_apply_layers
extern int PerlIO_apply_layers (pTHX_ PerlIO *f,const char *mode, const char *names);
#endif
diff --git a/perlsdio.h b/perlsdio.h
index 9e668f6184..1eb10d3abc 100644
--- a/perlsdio.h
+++ b/perlsdio.h
@@ -48,12 +48,14 @@
#else
# ifdef SOCKS_64BIT_BUG
# define PerlIO_getc(f) Perl_do_s64_getc(f)
-# define PerlIO_ungetc(f,c) Perl_do_s64_ungetc(c,f)
+# define PerlIO_ungetc(f,c) Perl_do_s64_ungetc(c,f)
# define PerlIO_read(f,buf,count) Perl_do_s64_fread(buf,count,f)
+# define PerlIO_tell(f) Perl_do_s64_tell(f)
# else
# define PerlIO_getc(f) getc(f)
# define PerlIO_ungetc(f,c) ungetc(c,f)
# define PerlIO_read(f,buf,count) (SSize_t)fread(buf,1,count,f)
+# define PerlIO_tell(f) ftell(f)
# endif /* SOCKS_64BIT_BUG */
#endif
#define PerlIO_eof(f) feof(f)
@@ -63,16 +65,11 @@
#define PerlIO_clearerr(f) clearerr(f)
#define PerlIO_flush(f) Fflush(f)
#ifdef SOCKS_64BIT_BUG
-# define PerlIO_tell(f) Perl_do_s64_tell(f)
+# define PerlIO_seek(f,o,w) Perl_do_s64_seek(f,o,w)
#else
-# define PerlIO_tell(f) ftell(f)
-#endif
-#if defined(VMS) && !defined(__DECC)
+# if defined(VMS) && !defined(__DECC)
/* Old VAXC RTL doesn't reset EOF on seek; Perl folk seem to expect this */
# define PerlIO_seek(f,o,w) (((f) && (*f) && ((*f)->_flag &= ~_IOEOF)),fseek(f,o,w))
-#else
-# ifdef SOCKS_64BIT_BUG
-# define PerlIO_seek(f,o,w) Perl_do_s64_seek(f,o,w)
# else
# define PerlIO_seek(f,o,w) fseek(f,o,w)
# endif
diff --git a/pod/perltoc.pod b/pod/perltoc.pod
index 4133ccc9fe..b34ecd6c90 100644
--- a/pod/perltoc.pod
+++ b/pod/perltoc.pod
@@ -3809,7 +3809,7 @@ C<!!!>, C<!!>, C<!>
=item The & Unary Operator
-=item Inserting Comments and C Preprocessor Directives
+=item Inserting POD, Comments and C Preprocessor Directives
=item Using XS With C++
@@ -4590,16 +4590,9 @@ work?, Patches speak louder than words
=item Keeping in sync
rsync'ing the source tree, Using rsync over the LAN, Using pushing over the
-NFS, rsync'ing the patches
-
-=item Why rsync the source tree
-
-It's easier, It's more recent, It's more reliable
-
-=item Why rsync the patches
-
-It's easier, It's a good reference, Finding a start point, Finding how to
-fix a bug, Finding the source of misbehaviour
+NFS, rsync'ing the patches, It's easier, It's more recent, It's more
+reliable, It's easier, It's a good reference, Finding a start point,
+Finding how to fix a bug, Finding the source of misbehaviour
=item Submitting patches
@@ -7966,7 +7959,7 @@ on first try?, 8) In our intranet we have many modules for internal use.
How can I integrate these modules with CPAN.pm but without uploading
the modules to CPAN?, 9) When I run CPAN's shell, I get error msg
about line 1 to 4, setting meta input/output via the /etc/inputrc
-file
+file, 10) Some authors have strange characters in their names
=item BUGS
@@ -8106,11 +8099,11 @@ C<cppstdin>, C<cppsymbols>, C<crosscompile>, C<cryptlib>, C<csh>
=item d
-C<d_access>, C<d_accessx>, C<d_alarm>, C<d_archlib>, C<d_atolf>,
-C<d_atoll>, C<d_attribut>, C<d_bcmp>, C<d_bcopy>, C<d_bincompat5005>,
-C<d_bsd>, C<d_bsdgetpgrp>, C<d_bsdsetpgrp>, C<d_bzero>, C<d_casti32>,
-C<d_castneg>, C<d_charvspr>, C<d_chown>, C<d_chroot>, C<d_chsize>,
-C<d_closedir>, C<d_const>, C<d_crypt>, C<d_csh>, C<d_cuserid>,
+C<d__fwalk>, C<d_access>, C<d_accessx>, C<d_alarm>, C<d_archlib>,
+C<d_atolf>, C<d_atoll>, C<d_attribut>, C<d_bcmp>, C<d_bcopy>,
+C<d_bincompat5005>, C<d_bsd>, C<d_bsdgetpgrp>, C<d_bsdsetpgrp>, C<d_bzero>,
+C<d_casti32>, C<d_castneg>, C<d_charvspr>, C<d_chown>, C<d_chroot>,
+C<d_chsize>, C<d_closedir>, C<d_const>, C<d_crypt>, C<d_csh>, C<d_cuserid>,
C<d_dbl_dig>, C<d_difftime>, C<d_dirnamlen>, C<d_dlerror>, C<d_dlopen>,
C<d_dlsymun>, C<d_dosuid>, C<d_drand48proto>, C<d_dup2>, C<d_eaccess>,
C<d_endgrent>, C<d_endhent>, C<d_endnent>, C<d_endpent>, C<d_endpwent>,
@@ -8148,32 +8141,33 @@ C<d_PRIu64>, C<d_PRIx64>, C<d_PRIXU64>, C<d_pthread_yield>, C<d_pwage>,
C<d_pwchange>, C<d_pwclass>, C<d_pwcomment>, C<d_pwexpire>, C<d_pwgecos>,
C<d_pwpasswd>, C<d_pwquota>, C<d_qgcvt>, C<d_quad>, C<d_readdir>,
C<d_readlink>, C<d_rename>, C<d_rewinddir>, C<d_rmdir>, C<d_safebcpy>,
-C<d_safemcpy>, C<d_sanemcmp>, C<d_sched_yield>, C<d_scm_rights>,
-C<d_SCNfldbl>, C<d_seekdir>, C<d_select>, C<d_sem>, C<d_semctl>,
-C<d_semctl_semid_ds>, C<d_semctl_semun>, C<d_semget>, C<d_semop>,
-C<d_setegid>, C<d_seteuid>, C<d_setgrent>, C<d_setgrps>, C<d_sethent>,
-C<d_setlinebuf>, C<d_setlocale>, C<d_setnent>, C<d_setpent>, C<d_setpgid>,
-C<d_setpgrp2>, C<d_setpgrp>, C<d_setprior>, C<d_setproctitle>,
-C<d_setpwent>, C<d_setregid>, C<d_setresgid>, C<d_setresuid>,
-C<d_setreuid>, C<d_setrgid>, C<d_setruid>, C<d_setsent>, C<d_setsid>,
-C<d_setvbuf>, C<d_sfio>, C<d_shm>, C<d_shmat>, C<d_shmatprototype>,
-C<d_shmctl>, C<d_shmdt>, C<d_shmget>, C<d_sigaction>, C<d_sigsetjmp>,
-C<d_socket>, C<d_socklen_t>, C<d_sockpair>, C<d_socks5_init>, C<d_sqrtl>,
-C<d_statblks>, C<d_statfs_f_flags>, C<d_statfs_s>, C<d_statvfs>,
-C<d_stdio_cnt_lval>, C<d_stdio_ptr_lval>, C<d_stdio_ptr_lval_nochange_cnt>,
-C<d_stdio_ptr_lval_sets_cnt>, C<d_stdio_stream_array>, C<d_stdiobase>,
-C<d_stdstdio>, C<d_strchr>, C<d_strcoll>, C<d_strctcpy>, C<d_strerrm>,
-C<d_strerror>, C<d_strtod>, C<d_strtol>, C<d_strtold>, C<d_strtoll>,
-C<d_strtoul>, C<d_strtoull>, C<d_strtouq>, C<d_strxfrm>, C<d_suidsafe>,
-C<d_symlink>, C<d_syscall>, C<d_sysconf>, C<d_sysernlst>, C<d_syserrlst>,
-C<d_system>, C<d_tcgetpgrp>, C<d_tcsetpgrp>, C<d_telldir>,
-C<d_telldirproto>, C<d_time>, C<d_times>, C<d_truncate>, C<d_tzname>,
-C<d_umask>, C<d_uname>, C<d_union_semun>, C<d_ustat>, C<d_vendorarch>,
-C<d_vendorbin>, C<d_vendorlib>, C<d_vfork>, C<d_void_closedir>,
-C<d_voidsig>, C<d_voidtty>, C<d_volatile>, C<d_vprintf>, C<d_wait4>,
-C<d_waitpid>, C<d_wcstombs>, C<d_wctomb>, C<d_xenix>, C<date>,
-C<db_hashtype>, C<db_prefixtype>, C<defvoidused>, C<direntrytype>,
-C<dlext>, C<dlsrc>, C<doublesize>, C<drand01>, C<dynamic_ext>
+C<d_safemcpy>, C<d_sanemcmp>, C<d_sbrkproto>, C<d_sched_yield>,
+C<d_scm_rights>, C<d_SCNfldbl>, C<d_seekdir>, C<d_select>, C<d_sem>,
+C<d_semctl>, C<d_semctl_semid_ds>, C<d_semctl_semun>, C<d_semget>,
+C<d_semop>, C<d_setegid>, C<d_seteuid>, C<d_setgrent>, C<d_setgrps>,
+C<d_sethent>, C<d_setlinebuf>, C<d_setlocale>, C<d_setnent>, C<d_setpent>,
+C<d_setpgid>, C<d_setpgrp2>, C<d_setpgrp>, C<d_setprior>,
+C<d_setproctitle>, C<d_setpwent>, C<d_setregid>, C<d_setresgid>,
+C<d_setresuid>, C<d_setreuid>, C<d_setrgid>, C<d_setruid>, C<d_setsent>,
+C<d_setsid>, C<d_setvbuf>, C<d_sfio>, C<d_shm>, C<d_shmat>,
+C<d_shmatprototype>, C<d_shmctl>, C<d_shmdt>, C<d_shmget>, C<d_sigaction>,
+C<d_sigsetjmp>, C<d_socket>, C<d_socklen_t>, C<d_sockpair>,
+C<d_socks5_init>, C<d_sqrtl>, C<d_statblks>, C<d_statfs_f_flags>,
+C<d_statfs_s>, C<d_statvfs>, C<d_stdio_cnt_lval>, C<d_stdio_ptr_lval>,
+C<d_stdio_ptr_lval_nochange_cnt>, C<d_stdio_ptr_lval_sets_cnt>,
+C<d_stdio_stream_array>, C<d_stdiobase>, C<d_stdstdio>, C<d_strchr>,
+C<d_strcoll>, C<d_strctcpy>, C<d_strerrm>, C<d_strerror>, C<d_strtod>,
+C<d_strtol>, C<d_strtold>, C<d_strtoll>, C<d_strtoul>, C<d_strtoull>,
+C<d_strtouq>, C<d_strxfrm>, C<d_suidsafe>, C<d_symlink>, C<d_syscall>,
+C<d_sysconf>, C<d_sysernlst>, C<d_syserrlst>, C<d_system>, C<d_tcgetpgrp>,
+C<d_tcsetpgrp>, C<d_telldir>, C<d_telldirproto>, C<d_time>, C<d_times>,
+C<d_truncate>, C<d_tzname>, C<d_umask>, C<d_uname>, C<d_union_semun>,
+C<d_ustat>, C<d_vendorarch>, C<d_vendorbin>, C<d_vendorlib>, C<d_vfork>,
+C<d_void_closedir>, C<d_voidsig>, C<d_voidtty>, C<d_volatile>,
+C<d_vprintf>, C<d_wait4>, C<d_waitpid>, C<d_wcstombs>, C<d_wctomb>,
+C<d_xenix>, C<date>, C<db_hashtype>, C<db_prefixtype>, C<defvoidused>,
+C<direntrytype>, C<dlext>, C<dlsrc>, C<doublesize>, C<drand01>,
+C<dynamic_ext>
=item e
@@ -9680,6 +9674,40 @@ C<GLOB_NOSPACE>, C<GLOB_ABEND>
=back
+=head2 File::Spec::Epoc - methods for Epoc file specs
+
+=over 4
+
+=item SYNOPSIS
+
+=item DESCRIPTION
+
+devnull
+
+=back
+
+tmpdir
+
+path
+
+canonpath
+
+splitpath
+
+splitdir
+
+catpath
+
+abs2rel
+
+rel2abs
+
+=over 4
+
+=item SEE ALSO
+
+=back
+
=head2 File::Spec::Functions - portably perform operations on file names
=over 4
diff --git a/proto.h b/proto.h
index 02c4bfd591..664336b6e7 100644
--- a/proto.h
+++ b/proto.h
@@ -247,13 +247,14 @@ PERL_CALLCONV I32 Perl_do_trans(pTHX_ SV* sv);
PERL_CALLCONV UV Perl_do_vecget(pTHX_ SV* sv, I32 offset, I32 size);
PERL_CALLCONV void Perl_do_vecset(pTHX_ SV* sv);
PERL_CALLCONV void Perl_do_vop(pTHX_ I32 optype, SV* sv, SV* left, SV* right);
-#ifdef SOCKS_64BIT_BUG
-PERL_CALLCONV int Perl_do_getc(PerlIO* fp);
-PERL_CALLCONV int Perl_do_ungetc(int ch, PerlIO* fp);
-PERL_CALLCONV SSize_t Perl_do_fread(void *buf, SSize_t count, PerlIO* fp);
-PERL_CALLCONV void Perl_do_s64_delete_buffer(PerlIO* fp);
+#if defined(SOCKS_64BIT_BUG)
+STATIC S64_IOB* S_s64_get_buffer(pTHX_ PerlIO* fp);
PERL_CALLCONV Off_t Perl_do_s64_tell(PerlIO* fp);
+PERL_CALLCONV SSize_t Perl_do_s64_fread(void *buf, SSize_t count, PerlIO* fp);
+PERL_CALLCONV int Perl_do_s64_getc(PerlIO* fp);
PERL_CALLCONV int Perl_do_s64_seek(PerlIO* fp, Off_t pos, int whence);
+PERL_CALLCONV int Perl_do_s64_ungetc(int ch, PerlIO* fp);
+PERL_CALLCONV void Perl_do_s64_delete_buffer(PerlIO* fp);
#endif
PERL_CALLCONV OP* Perl_dofile(pTHX_ OP* term);
PERL_CALLCONV I32 Perl_dowantarray(pTHX);
diff --git a/uconfig.h b/uconfig.h
index a00eed1972..8d25c1c923 100644
--- a/uconfig.h
+++ b/uconfig.h
@@ -3216,4 +3216,15 @@
*/
/*#define HAS_SBRK_PROTO / **/
+/* NEED_VA_COPY:
+ * This symbol, if defined, indicates that the system stores
+ * the variable argument list datatype, va_list, in a format
+ * that cannot be copied by simple assignment, so that some
+ * other means must be used when copying is required.
+ * As such systems vary in their provision (or non-provision)
+ * of copying mechanisms, handy.h defines a platform-
+ * independent macro, Perl_va_copy(src, dst), to do the job.
+ */
+/*#define NEED_VA_COPY / **/
+
#endif
diff --git a/uconfig.sh b/uconfig.sh
index ca27412ab5..0c8dffca32 100755
--- a/uconfig.sh
+++ b/uconfig.sh
@@ -431,6 +431,7 @@ modetype=int
multiarch='undef'
myarchname='unknown'
myuname='unknown'
+need_va_copy='undef'
netdb_hlen_type='int'
netdb_host_type='const char *'
netdb_name_type='const char *'
diff --git a/vos/config.alpha.def b/vos/config.alpha.def
index 5a88cb811b..92ac45796c 100644
--- a/vos/config.alpha.def
+++ b/vos/config.alpha.def
@@ -398,6 +398,7 @@ $mmaptype='void *'
$modetype='mode_t'
$multiarch='undef'
$myuname='VOS'
+$need_va_copy='undef'
$netdb_hlen_type='int'
$netdb_host_type='char *'
$netdb_name_type='char *'
diff --git a/vos/config.alpha.h b/vos/config.alpha.h
index f4d8392938..634466880c 100644
--- a/vos/config.alpha.h
+++ b/vos/config.alpha.h
@@ -3216,4 +3216,15 @@
/*#define HAS_SETPGRP /**/
/*#define USE_BSD_SETPGRP /**/
+/* NEED_VA_COPY:
+ * This symbol, if defined, indicates that the system stores
+ * the variable argument list datatype, va_list, in a format
+ * that cannot be copied by simple assignment, so that some
+ * other means must be used when copying is required.
+ * As such systems vary in their provision (or non-provision)
+ * of copying mechanisms, handy.h defines a platform-
+ * independent macro, Perl_va_copy(src, dst), to do the job.
+ */
+/*#define NEED_VA_COPY / **/
+
#endif
diff --git a/vos/config.ga.def b/vos/config.ga.def
index c041b5c686..f6949775d5 100644
--- a/vos/config.ga.def
+++ b/vos/config.ga.def
@@ -398,6 +398,7 @@ $mmaptype='void *'
$modetype='mode_t'
$multiarch='undef'
$myuname='VOS'
+$need_va_copy='undef'
$netdb_hlen_type='int'
$netdb_host_type='char *'
$netdb_name_type='char *'
diff --git a/vos/config.ga.h b/vos/config.ga.h
index 2fdc4a806d..834764a78e 100644
--- a/vos/config.ga.h
+++ b/vos/config.ga.h
@@ -3216,4 +3216,15 @@
/*#define HAS_SETPGRP /**/
/*#define USE_BSD_SETPGRP /**/
+/* NEED_VA_COPY:
+ * This symbol, if defined, indicates that the system stores
+ * the variable argument list datatype, va_list, in a format
+ * that cannot be copied by simple assignment, so that some
+ * other means must be used when copying is required.
+ * As such systems vary in their provision (or non-provision)
+ * of copying mechanisms, handy.h defines a platform-
+ * independent macro, Perl_va_copy(src, dst), to do the job.
+ */
+/*#define NEED_VA_COPY / **/
+
#endif
diff --git a/win32/config.bc b/win32/config.bc
index 04d5f45909..e171ab886c 100644
--- a/win32/config.bc
+++ b/win32/config.bc
@@ -604,6 +604,7 @@ mydomain=''
myhostname=''
myuname=''
n='-n'
+need_va_copy='undef'
netdb_hlen_type='int'
netdb_host_type='char *'
netdb_name_type='char *'
diff --git a/win32/config.gc b/win32/config.gc
index 4bf0d95807..aa2d188a1f 100644
--- a/win32/config.gc
+++ b/win32/config.gc
@@ -604,6 +604,7 @@ mydomain=''
myhostname=''
myuname=''
n='-n'
+need_va_copy='undef'
netdb_hlen_type='int'
netdb_host_type='char *'
netdb_name_type='char *'
diff --git a/win32/config.vc b/win32/config.vc
index 489cdd0683..a320bf11b1 100644
--- a/win32/config.vc
+++ b/win32/config.vc
@@ -604,6 +604,7 @@ mydomain=''
myhostname=''
myuname=''
n='-n'
+need_va_copy='undef'
netdb_hlen_type='int'
netdb_host_type='char *'
netdb_name_type='char *'