diff options
author | Nick Ing-Simmons <nik@tiuk.ti.com> | 2000-11-21 21:59:40 +0000 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 2000-11-21 21:59:40 +0000 |
commit | 778e6c4e916dc84b9dcf48eba0d7d07e9d98e21b (patch) | |
tree | 4ef1f2819debb679a5da5339eebaa5ff6e40befa | |
parent | 83b075c35b61a28ca7e2629bb5d6e26f9e0354fe (diff) | |
parent | fae6793e446a46318496910a9e0f1336f815c0bc (diff) | |
download | perl-778e6c4e916dc84b9dcf48eba0d7d07e9d98e21b.tar.gz |
Integrate mainline
p4raw-id: //depot/perlio@7798
-rw-r--r-- | Changes | 100 | ||||
-rwxr-xr-x | Configure | 257 | ||||
-rw-r--r-- | Porting/Glossary | 9 | ||||
-rw-r--r-- | Porting/config.sh | 5 | ||||
-rw-r--r-- | Porting/config_H | 13 | ||||
-rw-r--r-- | config_h.SH | 11 | ||||
-rw-r--r-- | configure.com | 1 | ||||
-rw-r--r-- | doio.c | 8 | ||||
-rw-r--r-- | embed.h | 18 | ||||
-rwxr-xr-x | embed.pl | 11 | ||||
-rw-r--r-- | epoc/config.sh | 1 | ||||
-rw-r--r-- | handy.h | 11 | ||||
-rw-r--r-- | makedef.pl | 21 | ||||
-rw-r--r-- | patchlevel.h | 2 | ||||
-rw-r--r-- | perlio.c | 6 | ||||
-rw-r--r-- | perlio.h | 2 | ||||
-rw-r--r-- | perlsdio.h | 13 | ||||
-rw-r--r-- | pod/perltoc.pod | 114 | ||||
-rw-r--r-- | proto.h | 11 | ||||
-rw-r--r-- | uconfig.h | 11 | ||||
-rwxr-xr-x | uconfig.sh | 1 | ||||
-rw-r--r-- | vos/config.alpha.def | 1 | ||||
-rw-r--r-- | vos/config.alpha.h | 11 | ||||
-rw-r--r-- | vos/config.ga.def | 1 | ||||
-rw-r--r-- | vos/config.ga.h | 11 | ||||
-rw-r--r-- | win32/config.bc | 1 | ||||
-rw-r--r-- | win32/config.gc | 1 | ||||
-rw-r--r-- | win32/config.vc | 1 |
28 files changed, 472 insertions, 181 deletions
@@ -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 @@ -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 + "'" @@ -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); } @@ -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 @@ -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 *' @@ -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 }; @@ -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); } @@ -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 @@ -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); @@ -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 *' |