diff options
author | Andy Dougherty <doughera@lafayette.edu> | 1998-03-09 10:23:33 -0500 |
---|---|---|
committer | Malcolm Beattie <mbeattie@sable.ox.ac.uk> | 1998-03-16 12:55:39 +0000 |
commit | e5c9fcd0420f2862565625a4bd5596204107f54f (patch) | |
tree | 6802f821b6b73f8fd7d5217e52348bd0ea711675 | |
parent | 9e48b294a088693583142bb2058db509a62bb303 (diff) | |
download | perl-e5c9fcd0420f2862565625a4bd5596204107f54f.tar.gz |
[PATCH 5.004_62} Config_62-01 patch available.
Date: Mon, 9 Mar 1998 15:23:33 -0500 (EST)
Subject: [PATCH 5.004_62] Tiny hint file updates
Date: Mon, 9 Mar 1998 13:21:46 -0500 (EST)
p4raw-id: //depot/perl@812
-rwxr-xr-x | Configure | 243 | ||||
-rw-r--r-- | Porting/Glossary | 69 | ||||
-rw-r--r-- | Porting/config.sh | 36 | ||||
-rw-r--r-- | Porting/config_H | 107 | ||||
-rw-r--r-- | config_h.SH | 95 | ||||
-rw-r--r-- | ext/ODBM_File/ODBM_File.xs | 6 | ||||
-rw-r--r-- | handy.h | 3 | ||||
-rw-r--r-- | hints/aix.sh | 2 | ||||
-rw-r--r-- | hints/dec_osf.sh | 2 | ||||
-rw-r--r-- | hints/dos_djgpp.sh | 2 | ||||
-rw-r--r-- | hints/freebsd.sh | 38 | ||||
-rw-r--r-- | hints/irix_6.sh | 2 | ||||
-rw-r--r-- | hints/irix_6_0.sh | 2 | ||||
-rw-r--r-- | hints/irix_6_1.sh | 2 | ||||
-rw-r--r-- | hints/os2.sh | 2 | ||||
-rw-r--r-- | hints/solaris_2.sh | 2 | ||||
-rw-r--r-- | patchlevel.h | 2 | ||||
-rw-r--r-- | perl.c | 16 | ||||
-rw-r--r-- | perl.h | 2 | ||||
-rw-r--r-- | perllio.h | 1 | ||||
-rw-r--r-- | pod/perldiag.pod | 20 | ||||
-rw-r--r-- | pp_sys.c | 16 | ||||
-rw-r--r-- | vms/config.vms | 14 |
23 files changed, 545 insertions, 139 deletions
@@ -20,7 +20,7 @@ # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $ # -# Generated on Tue Mar 3 11:16:26 EST 1998 [metaconfig 3.0 PL70] +# Generated on Mon Mar 9 14:02:25 EST 1998 [metaconfig 3.0 PL70] cat >/tmp/c1$$ <<EOF ARGGGHHHH!!!!! @@ -260,8 +260,6 @@ baserev='' bin='' binexp='' installbin='' -bincompat3='' -d_bincompat3='' byteorder='' cc='' gccversion='' @@ -308,6 +306,10 @@ d_dlsymun='' d_dosuid='' d_suidsafe='' d_dup2='' +d_endhent='' +d_endnent='' +d_endpent='' +d_endsent='' d_fchmod='' d_fchown='' d_fcntl='' @@ -333,6 +335,8 @@ d_uname='' d_getlogin='' d_getnbyaddr='' d_getnbyname='' +d_getnent='' +d_getpent='' d_getpgid='' d_getpgrp2='' d_bsdgetpgrp='' @@ -341,6 +345,7 @@ d_getppid='' d_getprior='' d_getpbyname='' d_getpbynumber='' +d_getsent='' d_getsbyname='' d_getsbyport='' d_gnulibc='' @@ -351,6 +356,8 @@ d_killpg='' d_link='' d_locconv='' d_lockf='' +d_longdbl='' +longdblsize='' d_lstat='' d_mblen='' d_mbstowcs='' @@ -361,6 +368,7 @@ d_memmove='' d_memset='' d_mkdir='' d_mkfifo='' +d_mkstemp='' d_mktime='' d_msg='' d_msgctl='' @@ -399,6 +407,8 @@ d_setgrps='' d_sethent='' d_setlinebuf='' d_setlocale='' +d_setnent='' +d_setpent='' d_setpgid='' d_setpgrp2='' d_bsdsetpgrp='' @@ -410,7 +420,9 @@ d_setresuid='' d_setreuid='' d_setrgid='' d_setruid='' +d_setsent='' d_setsid='' +d_setvbuf='' d_sfio='' usesfio='' d_shm='' @@ -2703,8 +2715,8 @@ baserev=5.0 echo " " echo "Getting the current patchlevel..." >&4 if $test -r $rsrc/patchlevel.h;then - patchlevel=`awk '/PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h` - subversion=`awk '/SUBVERSION/ {print $3}' $rsrc/patchlevel.h` + patchlevel=`awk '/define[ ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h` + subversion=`awk '/define[ ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h` else patchlevel=0 subversion=0 @@ -3025,39 +3037,6 @@ else installbin="$binexp" fi - -: Binary compatibility with 5.003 is not possible with 5.004_50 and later. -if test $patchlevel -gt 4 -o $subversion -ge 50; then - d_bincompat3=$undef -else - $cat <<EOM - -Perl 5.004 can be compiled for binary compatibility with 5.003. -If you decide to do so, you will be able to continue using any -extensions that were compiled for Perl 5.003. However, binary -compatibility forces Perl to expose some of its internal symbols -in the same way that 5.003 did. So you may have symbol conflicts -if you embed a binary-compatible Perl in other programs. - -EOM - case "$d_bincompat3" in - "$undef") dflt=n ;; - *) dflt=y ;; - esac - rp='Binary compatibility with Perl 5.003?' - . ./myread - case "$ans" in - y*) val="$define" ;; - *) val="$undef" ;; - esac - set d_bincompat3 - eval $setvar - case "$d_bincompat3" in - "$define") bincompat3=y ;; - *) bincompat3=n ;; - esac -fi - : determine where manual pages are on this system echo " " case "$sysman" in @@ -4685,23 +4664,23 @@ else eval $xrun else echo " " - echo "$nm didn't seem to work right. Trying ar instead..." >&4 + echo "$nm didn't seem to work right. Trying $ar instead..." >&4 com='' - if ar t $libc > libc.tmp; then + if $ar t $libc > libc.tmp; then for thisname in $libnames; do - ar t $thisname >>libc.tmp + $ar t $thisname >>libc.tmp done $sed -e "s/\\$_o\$//" < libc.tmp > libc.list echo "Ok." >&4 else - echo "ar didn't seem to work right." >&4 + echo "$ar didn't seem to work right." >&4 echo "Maybe this is a Cray...trying bld instead..." >&4 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list then for thisname in $libnames; do bld t $libnames | \ $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list - ar t $thisname >>libc.tmp + $ar t $thisname >>libc.tmp done echo "Ok." >&4 else @@ -6105,26 +6084,33 @@ $rm -f $$.tmp : check for ability to cast large floats to 32-bit ints. echo " " echo 'Checking whether your C compiler can cast large floats to int32.' >&4 -if $test "$intsize" -eq 4; then +if $test "$intsize" -ge 4; then xxx=int else xxx=long fi $cat >try.c <<EOCP +#include <stdio.h> #include <sys/types.h> #include <signal.h> $signal_t blech() { exit(3); } main() { $xxx i32; - double f; + double f, g; int result = 0; signal(SIGFPE, blech); - f = (double) 0x7fffffff; - f = 10 * f; - i32 = ($xxx) f; + /* Don't let compiler optimize the test away */ + sscanf("2147483647", "%lf", &f); /* f = (double) 0x7fffffff; */ + g = 10 * f; + i32 = ($xxx) g; + /* x86 processors will probably give 0x8000 0000, which is a + sign change. We don't want that. We want to mimic SPARC + behavior here, which is to preserve the sign and give + back 0x7fff ffff. + */ if (i32 != ($xxx) f) result |= 1; exit(result); @@ -6154,6 +6140,7 @@ $rm -f try try.* echo " " echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4 $cat >try.c <<EOCP +#include <stdio.h> #include <sys/types.h> #include <signal.h> $signal_t blech() { exit(7); } @@ -6163,11 +6150,16 @@ unsigned int dummy_int(p) unsigned int p; { return p; } unsigned short dummy_short(p) unsigned short p; { return p; } main() { - double f = -123.; + double f; unsigned long along; unsigned int aint; unsigned short ashort; int result = 0; + /* Frustrate gcc-2.7.2's optimizer which failed this test with + a direct f = -123. assignment. gcc-2.8.0 reportedly + optimized the whole file away + */ + sscanf("-123.", "%lf", &f); /* f = -123.; */ signal(SIGFPE, blech); along = (unsigned long)f; @@ -6179,7 +6171,7 @@ main() result |= 1; if (ashort != (unsigned short)-123) result |= 1; - f = (double)0x40000000; + sscanf("1073741824.", "%lf", &f); /* f = (double)0x40000000; */ f = f + f; along = 0; along = (unsigned long)f; @@ -6198,7 +6190,7 @@ main() if (result) exit(result); signal(SIGFPE, blech_in_list); - f = 123.; + sscanf("123.", "%lf", &f); /* f = 123.; */ along = dummy_long((unsigned long)f); aint = dummy_int((unsigned int)f); ashort = dummy_short((unsigned short)f); @@ -6337,18 +6329,6 @@ fi set d_crypt eval $setvar -: get csh whereabouts -case "$csh" in -'csh') val="$undef" ;; -*) val="$define" ;; -esac -set d_csh -eval $setvar -: Respect a hint or command line value for full_csh. -case "$full_csh" in -'') full_csh=$csh ;; -esac - : see if cuserid exists set cuserid d_cuserid eval $inlibc @@ -6580,6 +6560,22 @@ eval $setvar set dup2 d_dup2 eval $inlibc +: see if endhostent exists +set endhostent d_endhent +eval $inlibc + +: see if endnetent exists +set endnetent d_endnent +eval $inlibc + +: see if endprotoent exists +set endprotoent d_endpent +eval $inlibc + +: see if endservent exists +set endservent d_endsent +eval $inlibc + : Locate the flags for 'open()' echo " " $cat >open3.c <<'EOCP' @@ -6865,6 +6861,10 @@ eval $inlibc set getnetbyname d_getnbyname eval $inlibc +: see if getnetent exists +set getnetent d_getnent +eval $inlibc + : see if getprotobyname exists set getprotobyname d_getpbyname @@ -6873,6 +6873,11 @@ eval $inlibc : see if getprotobynumber exists set getprotobynumber d_getpbynumber eval $inlibc + +: see if getprotoent exists +set getprotoent d_getpent +eval $inlibc + : see if getpgid exists set getpgid d_getpgid eval $inlibc @@ -6897,6 +6902,11 @@ eval $inlibc : see if getservbyport exists set getservbyport d_getsbyport eval $inlibc + +: see if getservent exists +set getservent d_getsent +eval $inlibc + : see if gettimeofday or ftime exists set gettimeofday d_gettimeod eval $inlibc @@ -7054,6 +7064,49 @@ eval $inlibc set lockf d_lockf eval $inlibc +: check for long doubles +echo " " +echo $n "Checking to see if your system supports long doubles...$c" >&4 +echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c +if $cc $optimize $ccflags -c try.c; then + val="$define" + echo " Yup, it does." >&4 +else + val="$undef" + echo " Nope, it doesn't." >&4 +fi +$rm try.* +set d_longdbl +eval $setvar + +: check for length of long double +echo " " + +case "${d_longdbl}${longdblsize}" in +$define) + $echo $n "Checking to see how big your long doubles are...$c" >&4 + $cat >try.c <<'EOCP' +#include <stdio.h> +main() +{ + printf("%d\n", sizeof(long double)); +} +EOCP + set try + if eval $compile; then + longdblsize=`./try` + else + dflt='8' + echo "(I can't seem to compile the test program. Guessing...)" + rp="What is the size of a long double (in bytes)?" + . ./myread + longdblsize="$ans" + fi + $echo " $longdblsize bytes." + ;; +esac +$rm -f try.c try + : see if lstat exists set lstat d_lstat eval $inlibc @@ -7094,6 +7147,10 @@ eval $inlibc set mkfifo d_mkfifo eval $inlibc +: see if mkstemp exists +set mkstemp d_mkstemp +eval $inlibc + : see if mktime exists set mktime d_mktime eval $inlibc @@ -7269,8 +7326,8 @@ eval $setvar $rm -f try try.* : test whether pthreads are created in joinable -- aka undetached -- state -if test "X$usethreads" != X; then - echo >&4 "Checking whether pthreads are created joinable." +if test "X$usethreads" = "X$define"; then + echo $n "Checking whether pthreads are created joinable. $c" >&4 $cat >try.c <<'EOCP' #include <pthread.h> #include <stdio.h> @@ -7289,11 +7346,12 @@ EOCP if eval $compile; then yyy=`./try` case "$yyy" in - detached) echo "Nope, they aren't." ;; - *) echo "Yup, they are." ;; + detached) echo "Nope, they aren't." >&4 ;; + *) echo "Yup, they are." >&4 ;; esac else - echo "(I can't execute the test program--assuming they are.)" + echo " " + echo "(I can't execute the test program--assuming they are.)" >&4 yyy=joinable fi $rm -f try try.* @@ -7684,6 +7742,14 @@ eval $inlibc set setlocale d_setlocale eval $inlibc +: see if setnetent exists +set setnetent d_setnent +eval $inlibc + +: see if setprotoent exists +set setprotoent d_setpent +eval $inlibc + : see if setpgid exists set setpgid d_setpgid eval $inlibc @@ -7716,10 +7782,18 @@ eval $inlibc set setruid d_setruid eval $inlibc +: see if setservent exists +set setservent d_setsent +eval $inlibc + : see if setsid exists set setsid d_setsid eval $inlibc +: see if setvbuf exists +set setvbuf d_setvbuf +eval $inlibc + : see if sfio.h is available set sfio.h i_sfio eval $inhdr @@ -8860,7 +8934,7 @@ $rm -f try.* .out echo " " case "$doublesize" in '') - echo "Checking to see how big your double precision numbers are..." >&4 + $echo $n "Checking to see how big your double precision numbers are...$c" >&4 $cat >try.c <<'EOCP' #include <stdio.h> main() @@ -8871,6 +8945,7 @@ EOCP set try if eval $compile; then doublesize=`./try` + $echo $doublesize >&4 else dflt='8' echo "(I can't seem to compile the test program. Guessing...)" @@ -8891,6 +8966,18 @@ rp="What is the type for file position used by fsetpos()?" . ./myread fpostype="$ans" +: get csh whereabouts +case "$csh" in +'csh') val="$undef" ;; +*) val="$define" ;; +esac +set d_csh +eval $setvar +: Respect a hint or command line value for full_csh. +case "$full_csh" in +'') full_csh=$csh ;; +esac + : Store the full pathname to the sed program for use in the C program full_sed=$sed @@ -9175,7 +9262,7 @@ EOM esac ;; *) : no getnetbyaddr, so pick harmless default - netdb_name_type='long' + netdb_net_type='long' ;; esac fi @@ -10603,7 +10690,6 @@ awk='$awk' baserev='$baserev' bash='$bash' bin='$bin' -bincompat3='$bincompat3' binexp='$binexp' bison='$bison' byacc='$byacc' @@ -10643,7 +10729,6 @@ d_archlib='$d_archlib' d_attribut='$d_attribut' d_bcmp='$d_bcmp' d_bcopy='$d_bcopy' -d_bincompat3='$d_bincompat3' d_bsd='$d_bsd' d_bsdgetpgrp='$d_bsdgetpgrp' d_bsdsetpgrp='$d_bsdsetpgrp' @@ -10667,6 +10752,10 @@ d_dlopen='$d_dlopen' d_dlsymun='$d_dlsymun' d_dosuid='$d_dosuid' d_dup2='$d_dup2' +d_endhent='$d_endhent' +d_endnent='$d_endnent' +d_endpent='$d_endpent' +d_endsent='$d_endsent' d_eofnblk='$d_eofnblk' d_eunice='$d_eunice' d_fchmod='$d_fchmod' @@ -10690,8 +10779,10 @@ d_gethname='$d_gethname' d_getlogin='$d_getlogin' d_getnbyaddr='$d_getnbyaddr' d_getnbyname='$d_getnbyname' +d_getnent='$d_getnent' d_getpbyname='$d_getpbyname' d_getpbynumber='$d_getpbynumber' +d_getpent='$d_getpent' d_getpgid='$d_getpgid' d_getpgrp2='$d_getpgrp2' d_getpgrp='$d_getpgrp' @@ -10699,6 +10790,7 @@ d_getppid='$d_getppid' d_getprior='$d_getprior' d_getsbyname='$d_getsbyname' d_getsbyport='$d_getsbyport' +d_getsent='$d_getsent' d_gettimeod='$d_gettimeod' d_gnulibc='$d_gnulibc' d_htonl='$d_htonl' @@ -10709,6 +10801,7 @@ d_killpg='$d_killpg' d_link='$d_link' d_locconv='$d_locconv' d_lockf='$d_lockf' +d_longdbl='$d_longdbl' d_lstat='$d_lstat' d_mblen='$d_mblen' d_mbstowcs='$d_mbstowcs' @@ -10719,6 +10812,7 @@ d_memmove='$d_memmove' d_memset='$d_memset' d_mkdir='$d_mkdir' d_mkfifo='$d_mkfifo' +d_mkstemp='$d_mkstemp' d_mktime='$d_mktime' d_msg='$d_msg' d_msgctl='$d_msgctl' @@ -10765,6 +10859,8 @@ d_setgrps='$d_setgrps' d_sethent='$d_sethent' d_setlinebuf='$d_setlinebuf' d_setlocale='$d_setlocale' +d_setnent='$d_setnent' +d_setpent='$d_setpent' d_setpgid='$d_setpgid' d_setpgrp2='$d_setpgrp2' d_setpgrp='$d_setpgrp' @@ -10775,7 +10871,9 @@ d_setresuid='$d_setresuid' d_setreuid='$d_setreuid' d_setrgid='$d_setrgid' d_setruid='$d_setruid' +d_setsent='$d_setsent' d_setsid='$d_setsid' +d_setvbuf='$d_setvbuf' d_sfio='$d_sfio' d_shm='$d_shm' d_shmat='$d_shmat' @@ -10949,6 +11047,7 @@ ln='$ln' lns='$lns' locincpth='$locincpth' loclibpth='$loclibpth' +longdblsize='$longdblsize' longsize='$longsize' lp='$lp' lpr='$lpr' diff --git a/Porting/Glossary b/Porting/Glossary index fe7e630ee9..b0840a990d 100644 --- a/Porting/Glossary +++ b/Porting/Glossary @@ -62,10 +62,6 @@ bin (bin.U): is most often a local directory such as /usr/local/bin. Programs using this variable must be prepared to deal with ~name substitution. -bincompat3 (bincompat3.U): - This variable contains y if Perl 5.004 should be binary-compatible - with Perl 5.003. - binexp (bin.U): This is the same as the bin variable, but is filename expanded at configuration time, for use in your makefiles. @@ -196,12 +192,6 @@ d_bcopy (d_bcopy.U): This variable conditionally defines the HAS_BCOPY symbol if the bcopy() routine is available to copy strings. -d_bincompat3 (bincompat3.U): - This variable conditionally defines BINCOMPAT3 so that embed.h - can take special action if Perl 5.004 should be binary-compatible - with Perl 5.003. This is impossible for 5.004_50 and later, so - it is always $undef for those versions. - d_bsd (Guess.U): This symbol conditionally defines the symbol BSD when running on a BSD system. @@ -299,6 +289,22 @@ d_dup2 (d_dup2.U): This variable conditionally defines HAS_DUP2 if dup2() is available to duplicate file descriptors. +d_endhent (d_endhent.U): + This variable conditionally defines HAS_ENDHOSTENT if endhostent() is + available to close whatever was being used for host queries. + +d_endnent (d_endnent.U): + This variable conditionally defines HAS_ENDNETENT if endnetent() is + available to close whatever was being used for network queries. + +d_endpent (d_endpent.U): + This variable conditionally defines HAS_ENDPROTOENT if endprotoent() is + available to close whatever was being used for protocol queries. + +d_endsent (d_endsent.U): + This variable conditionally defines HAS_ENDSERVENT if endservent() is + available to close whatever was being used for service queries. + d_eofnblk (nblock_io.U): This variable conditionally defines EOF_NONBLOCK if EOF can be seen when reading from a non-blocking I/O source. @@ -402,6 +408,10 @@ d_getnbyname (d_getnbynm.U): indicates to the C program that the getnetbyname() routine is available to look up networks by their names. +d_getnent (d_getnent.U): + This variable conditionally defines HAS_GETNETENT if getnetent() is + available to look up network names in some data base or another. + d_getpbyname (d_getprotby.U): This variable conditionally defines the HAS_GETPROTOBYNAME symbol, which indicates to the C program that the @@ -414,6 +424,10 @@ d_getpbynumber (d_getprotby.U): getprotobynumber() routine is available to look up protocols by their number. +d_getpent (d_getpent.U): + This variable conditionally defines HAS_GETPROTOENT if getprotoent() is + available to look up protocols in some data base or another. + d_getpgid (d_getpgid.U): This variable conditionally defines the HAS_GETPGID symbol, which indicates to the C program that the getpgid(pid) function @@ -449,6 +463,10 @@ d_getsbyport (d_getsrvby.U): getservbyport() routine is available to look up services by their port. +d_getsent (d_getsent.U): + This variable conditionally defines HAS_GETSERVENT if getservent() is + available to look up network services in some data base or another. + d_gettimeod (d_ftime.U): This variable conditionally defines the HAS_GETTIMEOFDAY symbol, which indicates that the gettimeofday() system call exists (to obtain a @@ -491,6 +509,10 @@ d_lockf (d_lockf.U): This variable conditionally defines HAS_LOCKF if lockf() is available to do file locking. +d_longdbl (d_longdbl.U): + This variable conditionally defines HAS_LONG_DOUBLE if + the long double type is supported. + d_lstat (d_lstat.U): This variable conditionally defines HAS_LSTAT if lstat() is available to do file stats on symbolic links. @@ -539,6 +561,11 @@ d_mkfifo (d_mkfifo.U): This variable conditionally defines the HAS_MKFIFO symbol, which indicates to the C program that the mkfifo() routine is available. +d_mkstemp (d_mkstemp.U): + This variable conditionally defines the HAS_MKSTEMP symbol, which + indicates to the C program that the mkstemp() routine is available + to create and open a unique tempporary file. + d_mktime (d_mktime.U): This variable conditionally defines the HAS_MKTIME symbol, which indicates to the C program that the mktime() routine is available. @@ -746,6 +773,14 @@ d_setlocale (d_setlocale.U): This variable conditionally defines HAS_SETLOCALE if setlocale() is available to handle locale-specific ctype implementations. +d_setnent (d_setnent.U): + This variable conditionally defines HAS_SETNETENT if setnetent() is + available. + +d_setpent (d_setpent.U): + This variable conditionally defines HAS_SETPROTOENT if setprotoent() is + available. + d_setpgid (d_setpgid.U): This variable conditionally defines the HAS_SETPGID symbol if the setpgid(pid, gpid) function is available to set process group ID. @@ -793,10 +828,19 @@ d_setruid (d_setruid.U): indicates to the C program that the setruid() routine is available to change the real uid of the current program. +d_setsent (d_setsent.U): + This variable conditionally defines HAS_SETSERVENT if setservent() is + available. + d_setsid (d_setsid.U): This variable conditionally defines HAS_SETSID if setsid() is available to set the process group ID. +d_setvbuf (d_setvbuf.U): + This variable conditionally defines the HAS_SETVBUF symbol, which + indicates to the C program that the setvbuf() routine is available + to change buffering on an open stdio stream. + d_sfio (d_sfio.U): This variable conditionally defines the USE_SFIO symbol, and indicates whether sfio is available (and should be used). @@ -1498,6 +1542,11 @@ loclibpth (libpth.U): prepended to libpth, and is intended to be easily set from the command line. +longdblsize (d_longdbl.U): + This variable contains the value of the LONG_DOUBLESIZE symbol, which + indicates to the C program how many bytes there are in a long double, + if this system supports long doubles. + longsize (intsize.U): This variable contains the value of the LONGSIZE symbol, which indicates to the C program how many bytes there are in a long. diff --git a/Porting/config.sh b/Porting/config.sh index 4fb150ef9d..b709411220 100644 --- a/Porting/config.sh +++ b/Porting/config.sh @@ -8,7 +8,7 @@ # Package name : perl5 # Source directory : . -# Configuration time: Tue Mar 3 11:39:44 EST 1998 +# Configuration time: Mon Mar 9 14:20:14 EST 1998 # Configured by : doughera # Target system : linux fractal 2.0.33 #1 tue feb 3 10:11:46 est 1998 i686 unknown @@ -30,21 +30,20 @@ afs='false' alignbytes='4' aphostname='' ar='ar' -archlib='/opt/perl/lib/i686-linux-thread/5.00461' -archlibexp='/opt/perl/lib/i686-linux-thread/5.00461' +archlib='/opt/perl/lib/i686-linux-thread/5.00462' +archlibexp='/opt/perl/lib/i686-linux-thread/5.00462' archname='i686-linux-thread' archobjs='' awk='awk' baserev='5.0' bash='' bin='/opt/perl/bin' -bincompat3='' binexp='/opt/perl/bin' bison='' byacc='byacc' byteorder='1234' c='' -castflags='1' +castflags='0' cat='cat' cc='cc' cccdlflags='-fpic' @@ -52,7 +51,7 @@ ccdlflags='-rdynamic' ccflags='-D_REENTRANT -Dbool=char -DHAS_BOOL -I/usr/local/include' cf_by='doughera' cf_email='yourname@yourhost.yourplace.com' -cf_time='Tue Mar 3 11:39:44 EST 1998' +cf_time='Mon Mar 9 14:20:14 EST 1998' chgrp='' chmod='' chown='' @@ -78,13 +77,12 @@ d_archlib='define' d_attribut='define' d_bcmp='define' d_bcopy='define' -d_bincompat3='undef' d_bsd='undef' d_bsdgetpgrp='undef' d_bsdsetpgrp='undef' d_bzero='define' -d_casti32='define' -d_castneg='undef' +d_casti32='undef' +d_castneg='define' d_charvspr='undef' d_chown='define' d_chroot='define' @@ -102,6 +100,10 @@ d_dlopen='define' d_dlsymun='undef' d_dosuid='undef' d_dup2='define' +d_endhent='define' +d_endnent='define' +d_endpent='define' +d_endsent='define' d_eofnblk='define' d_eunice='undef' d_fchmod='define' @@ -125,8 +127,10 @@ d_gethname='undef' d_getlogin='define' d_getnbyaddr='define' d_getnbyname='define' +d_getnent='define' d_getpbyname='define' d_getpbynumber='define' +d_getpent='define' d_getpgid='define' d_getpgrp2='undef' d_getpgrp='define' @@ -134,6 +138,7 @@ d_getppid='define' d_getprior='define' d_getsbyname='define' d_getsbyport='define' +d_getsent='define' d_gettimeod='define' d_gnulibc='define' d_htonl='define' @@ -144,6 +149,7 @@ d_killpg='define' d_link='define' d_locconv='define' d_lockf='define' +d_longdbl='define' d_lstat='define' d_mblen='define' d_mbstowcs='define' @@ -154,6 +160,7 @@ d_memmove='define' d_memset='define' d_mkdir='define' d_mkfifo='define' +d_mkstemp='define' d_mktime='define' d_msg='define' d_msgctl='define' @@ -200,6 +207,8 @@ d_setgrps='define' d_sethent='define' d_setlinebuf='define' d_setlocale='define' +d_setnent='define' +d_setpent='define' d_setpgid='define' d_setpgrp2='undef' d_setpgrp='define' @@ -210,7 +219,9 @@ d_setresuid='undef' d_setreuid='define' d_setrgid='undef' d_setruid='undef' +d_setsent='define' d_setsid='define' +d_setvbuf='define' d_sfio='undef' d_shm='define' d_shmat='define' @@ -355,7 +366,7 @@ i_varhdr='stdarg.h' i_vfork='undef' incpath='' inews='' -installarchlib='/opt/perl/lib/i686-linux-thread/5.00461' +installarchlib='/opt/perl/lib/i686-linux-thread/5.00462' installbin='/opt/perl/bin' installman1dir='/opt/perl/man/man1' installman3dir='/opt/perl/man/man3' @@ -384,6 +395,7 @@ ln='ln' lns='/bin/ln -s' locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' +longdblsize='12' longsize='4' lp='' lpr='' @@ -499,7 +511,7 @@ stdio_filbuf='' stdio_ptr='((fp)->_IO_read_ptr)' strings='/usr/include/string.h' submit='' -subversion='61' +subversion='62' sysman='/usr/man/man1' tail='' tar='' @@ -532,5 +544,5 @@ xlibpth='/usr/lib/386 /lib/386' zcat='' zip='zip' PATCHLEVEL=4 -SUBVERSION=61 +SUBVERSION=62 CONFIG=true diff --git a/Porting/config_H b/Porting/config_H index 8079a38331..52acfdc8e1 100644 --- a/Porting/config_H +++ b/Porting/config_H @@ -17,7 +17,7 @@ /* * Package name : perl5 * Source directory : . - * Configuration time: Tue Mar 3 11:39:44 EST 1998 + * Configuration time: Mon Mar 9 14:20:14 EST 1998 * Configured by : doughera * Target system : linux fractal 2.0.33 #1 tue feb 3 10:11:46 est 1998 i686 unknown */ @@ -1282,7 +1282,7 @@ * This symbol is defined if the C compiler can cast negative * or large floating point numbers to 32-bit ints. */ -#define CASTI32 /**/ +/*#define CASTI32 / **/ /* CASTNEGFLOAT: * This symbol is defined if the C compiler can cast negative @@ -1296,8 +1296,8 @@ * 2 = couldn't cast >= 0x80000000 * 4 = couldn't cast in argument expression list */ -/*#define CASTNEGFLOAT / **/ -#define CASTFLAGS 1 /**/ +#define CASTNEGFLOAT /**/ +#define CASTFLAGS 0 /**/ /* VOID_CLOSEDIR: * This symbol, if defined, indicates that the closedir() routine @@ -1574,8 +1574,8 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define ARCHLIB "/opt/perl/lib/i686-linux-thread/5.00461" /**/ -#define ARCHLIB_EXP "/opt/perl/lib/i686-linux-thread/5.00461" /**/ +#define ARCHLIB "/opt/perl/lib/i686-linux-thread/5.00462" /**/ +#define ARCHLIB_EXP "/opt/perl/lib/i686-linux-thread/5.00462" /**/ /* CAT2: * This macro catenates 2 tokens together. @@ -1598,10 +1598,36 @@ #endif /* CSH: - * This symbol, if defined, indicates that the C-shell exists. - * If defined, contains the full pathname of csh. + * This symbol, if defined, contains the full pathname of csh. */ -#define CSH "/bin/csh" /**/ +#define HAS_CSH /**/ +#ifdef HAS_CSH +#define CSH "/bin/csh" /**/ +#endif + +/* HAS_ENDHOSTENT: + * This symbol, if defined, indicates that the endhostent() routine is + * available to close whatever was being used for host queries. + */ +#define HAS_ENDHOSTENT /**/ + +/* HAS_ENDNETENT: + * This symbol, if defined, indicates that the endnetent() routine is + * available to close whatever was being used for network queries. + */ +#define HAS_ENDNETENT /**/ + +/* HAS_ENDPROTOENT: + * This symbol, if defined, indicates that the endprotoent() routine is + * available to close whatever was being used for protocol queries. + */ +#define HAS_ENDPROTOENT /**/ + +/* HAS_ENDSERVENT: + * This symbol, if defined, indicates that the endservent() routine is + * available to close whatever was being used for service queries. + */ +#define HAS_ENDSERVENT /**/ /* HAS_GETHOSTBYADDR: * This symbol, if defined, indicates that the gethostbyaddr() routine is @@ -1633,6 +1659,18 @@ */ #define HAS_GETNETBYNAME /**/ +/* HAS_GETNETENT: + * This symbol, if defined, indicates that the getnetent() routine is + * available to look up network names in some data base or another. + */ +#define HAS_GETNETENT /**/ + +/* HAS_GETPROTOENT: + * This symbol, if defined, indicates that the getprotoent() routine is + * available to look up protocols in some data base or another. + */ +#define HAS_GETPROTOENT /**/ + /* HAS_GETPROTOBYNAME: * This symbol, if defined, indicates that the getprotobyname() * routine is available to look up protocols by their name. @@ -1644,6 +1682,12 @@ #define HAS_GETPROTOBYNAME /**/ #define HAS_GETPROTOBYNUMBER /**/ +/* HAS_GETSERVENT: + * This symbol, if defined, indicates that the getservent() routine is + * available to look up network services in some data base or another. + */ +#define HAS_GETSERVENT /**/ + /* HAS_GETSERVBYNAME: * This symbol, if defined, indicates that the getservbyname() * routine is available to look up services by their name. @@ -1655,6 +1699,26 @@ #define HAS_GETSERVBYNAME /**/ #define HAS_GETSERVBYPORT /**/ +/* HAS_LONG_DOUBLE: + * This symbol will be defined if the C compiler supports long + * doubles. + */ +/* LONG_DOUBLESIZE: + * This symbol contains the size of a long double, so that the + * C preprocessor can make decisions based on it. It is only + * defined if the system supports long doubles. + */ +#define HAS_LONG_DOUBLE /**/ +#ifdef HAS_LONG_DOUBLE +#define LONG_DOUBLESIZE 12 /**/ +#endif + +/* HAS_MKSTEMP: + * This symbol, if defined, indicates that the mkstemp routine is + * available to create and open a unique temporary file. + */ +#define HAS_MKSTEMP /**/ + /* HAS_SETGROUPS: * This symbol, if defined, indicates that the setgroups() routine is * available to set the list of process groups. If unavailable, multiple @@ -1668,6 +1732,31 @@ */ #define HAS_SETHOSTENT /**/ +/* HAS_SETNETENT: + * This symbol, if defined, indicates that the setnetent() routine is + * available. + */ +#define HAS_SETNETENT /**/ + +/* HAS_SETPROTOENT: + * This symbol, if defined, indicates that the setprotoent() routine is + * available. + */ +#define HAS_SETPROTOENT /**/ + +/* HAS_SETSERVENT: + * This symbol, if defined, indicates that the setservent() routine is + * available. + */ +#define HAS_SETSERVENT /**/ + +/* HAS_SETVBUF: + * This symbol, if defined, indicates that the setvbuf routine is + * available to change buffering on an open stdio stream. + * to a line-buffered mode. + */ +#define HAS_SETVBUF /**/ + /* Signal_t: * This symbol's value is either "void" or "int", corresponding to the * appropriate return type of a signal handler. Thus, you can declare diff --git a/config_h.SH b/config_h.SH index 138e08a642..77750cd98c 100644 --- a/config_h.SH +++ b/config_h.SH @@ -1612,10 +1612,36 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- #endif /* CSH: - * This symbol, if defined, indicates that the C-shell exists. - * If defined, contains the full pathname of csh. + * This symbol, if defined, contains the full pathname of csh. */ -#$d_csh CSH "$full_csh" /**/ +#$d_csh HAS_CSH /**/ +#ifdef HAS_CSH +#define CSH "$full_csh" /**/ +#endif + +/* HAS_ENDHOSTENT: + * This symbol, if defined, indicates that the endhostent() routine is + * available to close whatever was being used for host queries. + */ +#$d_endhent HAS_ENDHOSTENT /**/ + +/* HAS_ENDNETENT: + * This symbol, if defined, indicates that the endnetent() routine is + * available to close whatever was being used for network queries. + */ +#$d_endnent HAS_ENDNETENT /**/ + +/* HAS_ENDPROTOENT: + * This symbol, if defined, indicates that the endprotoent() routine is + * available to close whatever was being used for protocol queries. + */ +#$d_endpent HAS_ENDPROTOENT /**/ + +/* HAS_ENDSERVENT: + * This symbol, if defined, indicates that the endservent() routine is + * available to close whatever was being used for service queries. + */ +#$d_endsent HAS_ENDSERVENT /**/ /* HAS_GETHOSTBYADDR: * This symbol, if defined, indicates that the gethostbyaddr() routine is @@ -1647,6 +1673,18 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- */ #$d_getnbyname HAS_GETNETBYNAME /**/ +/* HAS_GETNETENT: + * This symbol, if defined, indicates that the getnetent() routine is + * available to look up network names in some data base or another. + */ +#$d_getnent HAS_GETNETENT /**/ + +/* HAS_GETPROTOENT: + * This symbol, if defined, indicates that the getprotoent() routine is + * available to look up protocols in some data base or another. + */ +#$d_getpent HAS_GETPROTOENT /**/ + /* HAS_GETPROTOBYNAME: * This symbol, if defined, indicates that the getprotobyname() * routine is available to look up protocols by their name. @@ -1658,6 +1696,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- #$d_getpbyname HAS_GETPROTOBYNAME /**/ #$d_getpbynumber HAS_GETPROTOBYNUMBER /**/ +/* HAS_GETSERVENT: + * This symbol, if defined, indicates that the getservent() routine is + * available to look up network services in some data base or another. + */ +#$d_getsent HAS_GETSERVENT /**/ + /* HAS_GETSERVBYNAME: * This symbol, if defined, indicates that the getservbyname() * routine is available to look up services by their name. @@ -1669,6 +1713,26 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- #$d_getsbyname HAS_GETSERVBYNAME /**/ #$d_getsbyport HAS_GETSERVBYPORT /**/ +/* HAS_LONG_DOUBLE: + * This symbol will be defined if the C compiler supports long + * doubles. + */ +/* LONG_DOUBLESIZE: + * This symbol contains the size of a long double, so that the + * C preprocessor can make decisions based on it. It is only + * defined if the system supports long doubles. + */ +#$d_longdbl HAS_LONG_DOUBLE /**/ +#ifdef HAS_LONG_DOUBLE +#define LONG_DOUBLESIZE $longdblsize /**/ +#endif + +/* HAS_MKSTEMP: + * This symbol, if defined, indicates that the mkstemp routine is + * available to create and open a unique temporary file. + */ +#$d_mkstemp HAS_MKSTEMP /**/ + /* HAS_SETGROUPS: * This symbol, if defined, indicates that the setgroups() routine is * available to set the list of process groups. If unavailable, multiple @@ -1682,6 +1746,31 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- */ #$d_sethent HAS_SETHOSTENT /**/ +/* HAS_SETNETENT: + * This symbol, if defined, indicates that the setnetent() routine is + * available. + */ +#$d_setnent HAS_SETNETENT /**/ + +/* HAS_SETPROTOENT: + * This symbol, if defined, indicates that the setprotoent() routine is + * available. + */ +#$d_setpent HAS_SETPROTOENT /**/ + +/* HAS_SETSERVENT: + * This symbol, if defined, indicates that the setservent() routine is + * available. + */ +#$d_setsent HAS_SETSERVENT /**/ + +/* HAS_SETVBUF: + * This symbol, if defined, indicates that the setvbuf routine is + * available to change buffering on an open stdio stream. + * to a line-buffered mode. + */ +#$d_setvbuf HAS_SETVBUF /**/ + /* Signal_t: * This symbol's value is either "void" or "int", corresponding to the * appropriate return type of a signal handler. Thus, you can declare diff --git a/ext/ODBM_File/ODBM_File.xs b/ext/ODBM_File/ODBM_File.xs index b57e560bd3..53d1930c54 100644 --- a/ext/ODBM_File/ODBM_File.xs +++ b/ext/ODBM_File/ODBM_File.xs @@ -3,7 +3,7 @@ #include "XSUB.h" #ifdef NULL -#undef NULL +#undef NULL /* XXX Why? */ #endif #ifdef I_DBM # include <dbm.h> @@ -46,6 +46,10 @@ static int dbmrefcnt; MODULE = ODBM_File PACKAGE = ODBM_File PREFIX = odbm_ +#ifndef NULL +# define NULL 0 +#endif + ODBM_File odbm_TIEHASH(dbtype, filename, flags, mode) char * dbtype @@ -102,7 +102,8 @@ Further, we need to know about PTRSIZE == sizeof(void *) and DOUBLESIZE == sizeof(double) if we really want to try to handle - 32/64-bit combinations. + 32/64-bit combinations. Finally, we might also need to know + HAS_LONG_DOUBLE and LONG_DOUBLESIZE. For the moment, these are only mentioned here so metaconfig will construct Configure to figure out the various sizes. diff --git a/hints/aix.sh b/hints/aix.sh index bc26590291..a29466e4f8 100644 --- a/hints/aix.sh +++ b/hints/aix.sh @@ -71,7 +71,7 @@ lddlflags='-H512 -T512 -bhalt:4 -bM:SRE -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT). ;; esac -if [ "X$usethreads" != "X" ]; then +if [ "X$usethreads" = "X$define" ]; then ccflags="-DNEED_PTHREAD_INIT $ccflags" case "$cc" in xlc_r | cc_r) diff --git a/hints/dec_osf.sh b/hints/dec_osf.sh index ae49f503a0..5055302353 100644 --- a/hints/dec_osf.sh +++ b/hints/dec_osf.sh @@ -180,7 +180,7 @@ case "$optimize" in ;; esac -if [ "X$usethreads" != "X" ]; then +if [ "X$usethreads" = "X$define" ]; then # Threads interfaces changed with V4.0. case "$_DEC_uname_r" in *[123].*) libswanted="$libswanted pthreads mach exc c_r" diff --git a/hints/dos_djgpp.sh b/hints/dos_djgpp.sh index 9878cc33fc..1b4a845fc2 100644 --- a/hints/dos_djgpp.sh +++ b/hints/dos_djgpp.sh @@ -66,7 +66,7 @@ esac exec tr.exe "\$@" EOSC -if [ "X$usethreads" != "X" ]; then +if [ "X$usethreads" = "X$define" ]; then set `echo X "$libswanted "| sed -e 's/ c / gthreads c /'` shift libswanted="$*" diff --git a/hints/freebsd.sh b/hints/freebsd.sh index 5e89d56039..f1bbd60457 100644 --- a/hints/freebsd.sh +++ b/hints/freebsd.sh @@ -17,7 +17,12 @@ # Additional 2.2 defines from # Mark Murray <mark@grondar.za> # Date: Wed, 6 Nov 1996 09:44:58 +0200 (MET) -# +# +# Modified to ensure we replace -lc with -lc_r, and +# to put in place-holders for various specific hints. +# Andy Dougherty <doughera@lafcol.lafayette.edu> +# Date: Tue Mar 10 16:07:00 EST 1998 +# # The two flags "-fpic -DPIC" are used to indicate a # will-be-shared object. Configure will guess the -fpic, (and the # -DPIC is not used by perl proper) but the full define is included to @@ -104,9 +109,14 @@ problem. Try EOM -if [ "X$usethreads" != "X" ]; then +# XXX EXPERIMENTAL A.D. 03/09/1998 +# XXX This script UU/usethreads.cbu will get 'called-back' by Configure +# XXX after it has prompted the user for whether to use threads. +cat > UU/usethreads.cbu <<'EOSH' +case "$usethreads" in +$define) if [ ! -r /usr/lib/libc_r.a ]; then - cat <<'EOM' + cat <<'EOM' >&4 The re-entrant C library /usr/lib/libc_r.a does not exist; cannot build threaded Perl. Consider upgrading to a newer FreeBSD snapshot or release: @@ -115,5 +125,23 @@ at least the FreeBSD 3.0-971225-SNAP is known to have the libc_r.a. EOM exit 1 fi - libswanted="$libswanted c_r" -fi + # Patches to libc_r may be required. + # Print out a note about them here. + + # These checks by Andy Dougherty <doughera@lafcol.lafayette.edu> + # Please update or change them as you learn more! + # -lc_r must REPLACE -lc. AD 03/10/1998 + set `echo X "$libswanted "| sed -e 's/ c / c_r /'` + shift + libswanted="$*" + # Configure will probably pick the wrong libc to use for nm scan. + # The safest quick-fix is just to not use nm at all. + usenm=false + # Is vfork buggy in 3.0? + case "$osvers" in + 3.0) usevfork=false ;; + esac + ;; +esac +EOSH +# XXX EXPERIMENTAL --end of call-back diff --git a/hints/irix_6.sh b/hints/irix_6.sh index 3d8202a8ae..ed3c112ffa 100644 --- a/hints/irix_6.sh +++ b/hints/irix_6.sh @@ -117,7 +117,7 @@ libswanted="$*" # makes IRIX 6.2 cc to emit bad code. pp_ctl_cflags='optimize=-O' -if [ "X$usethreads" != "X" ]; then +if [ "X$usethreads" = "X$define" ]; then if test ! -f /usr/include/pthread.h -o ! -f /usr/lib/libpthread.so; then uname_r=`uname -r` case "`uname -r`" in diff --git a/hints/irix_6_0.sh b/hints/irix_6_0.sh index e76890d120..b0a39943bd 100644 --- a/hints/irix_6_0.sh +++ b/hints/irix_6_0.sh @@ -42,7 +42,7 @@ libswanted="$*" # shift # libswanted="$*" -if [ "X$usethreads" != "X" ]; then +if [ "X$usethreads" = "X$define" ]; then echo >&4 "IRIX 6.0 does not have POSIX threads." echo >&4 "You should upgrade to at least IRIX 6.3." echo >&4 "Cannot continue, aborting." diff --git a/hints/irix_6_1.sh b/hints/irix_6_1.sh index 91c3ef8cf8..1c54f774a9 100644 --- a/hints/irix_6_1.sh +++ b/hints/irix_6_1.sh @@ -42,7 +42,7 @@ libswanted="$*" # shift # libswanted="$*" -if [ "X$usethreads" != "X" ]; then +if [ "X$usethreads" = "X$define" ]; then echo >&4 "IRIX 6.1 does not have POSIX threads." echo >&4 "You should upgrade to at least IRIX 6.3." echo >&4 "Cannot continue, aborting." diff --git a/hints/os2.sh b/hints/os2.sh index 7cda0bf89b..f11eeb36ed 100644 --- a/hints/os2.sh +++ b/hints/os2.sh @@ -245,7 +245,7 @@ case "X$optimize" in ;; esac -if [ "X$usethreads" != "X" ]; then +if [ "X$usethreads" = "X$define" ]; then ccflags="-Zmt $ccflags" cppflags="-Zmt $cppflags" # Do we really need to set this? aout_ccflags="-DUSE_THREADS $aout_ccflags" diff --git a/hints/solaris_2.sh b/hints/solaris_2.sh index 7f7a85680c..047e4cf3b7 100644 --- a/hints/solaris_2.sh +++ b/hints/solaris_2.sh @@ -230,7 +230,7 @@ rm -f core # XXX EOSH -if [ "X$usethreads" != "X" ]; then +if [ "X$usethreads" = "X$define" ]; then ccflags="-D_REENTRANT $ccflags" # -lpthread needs to come before -lc but after other libraries such # as -lgdbm and such like. We assume here that -lc is present in diff --git a/patchlevel.h b/patchlevel.h index 44bbe3ac57..aec072e4a1 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -46,5 +46,5 @@ static char *local_patches[] = { # define LOCAL_PATCH_COUNT \ (sizeof(local_patches)/sizeof(local_patches[0])-2) -#define __PATCHLEVEL_H_INCLUDED__ +# define __PATCHLEVEL_H_INCLUDED__ #endif @@ -559,6 +559,7 @@ perl_parse(PerlInterpreter *sv_interp, void (*xsinit) (void), int argc, char **a char *validarg = ""; I32 oldscope; AV* comppadlist; + int e_tmpfd = -1; dJMPENV; int ret; @@ -679,12 +680,20 @@ setuid perl scripts securely.\n"); croak("No -e allowed in setuid scripts"); if (!e_fp) { e_tmpname = savepv(TMPPATH); +#ifdef HAS_MKSTEMP + e_tmpfd = PerlLIO_mkstemp(e_tmpname); + + if (e_tmpfd < 0) + croak("Can't mkstemp() temporary file \"%s\"", e_tmpname); + e_fp = PerlIO_fdopen(e_tmpfd,"w"); +#else /* use mktemp() */ (void)PerlLIO_mktemp(e_tmpname); if (!*e_tmpname) - croak("Can't mktemp()"); + croak("Can't mktemp() temporary file \"%s\"", e_tmpname); e_fp = PerlIO_open(e_tmpname,"w"); - if (!e_fp) - croak("Cannot open temporary file"); +#endif /* HAS_MKSTEMP */ + if (!e_fp) + croak("Cannot open temporary file \"%s\"", e_tmpname); } if (*++s) PerlIO_puts(e_fp,s); @@ -916,6 +925,7 @@ print \" \\@INC:\\n @INC\\n\";"); (void)UNLINK(e_tmpname); Safefree(e_tmpname); e_tmpname = Nullch; + e_tmpfd = -1; } /* now that script is parsed, we can modify record separator */ @@ -2042,7 +2042,7 @@ enum { #endif /* !USE_LOCALE_NUMERIC */ -#if !defined(PERLIO_IS_STDIO) && defined(HAS_ATTRIBUTE) +#if !defined(PERLIO_IS_STDIO) && defined(HASATTRIBUTE) /* * Now we have __attribute__ out of the way * Remap printf @@ -14,6 +14,7 @@ #define PerlLIO_lseek(fd, offset, mode) lseek((fd), (offset), (mode)) #define PerlLIO_lstat(name, buf) lstat((name), (buf)) #define PerlLIO_mktemp(file) mktemp((file)) +#define PerlLIO_mkstemp(file) mkstemp((file)) #define PerlLIO_open(file, flag) open((file), (flag)) #define PerlLIO_open3(file, flag, perm) open((file), (flag), (perm)) #define PerlLIO_read(fd, buf, count) read((fd), (buf), (count)) diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 9f16761239..25f3b68fce 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -693,10 +693,17 @@ to exist. (F) List assignment to %ENV is not supported on some systems, notably VMS. -=item Can't mktemp() +=item Can't mkstemp() temporary file %s -(F) The mktemp() routine failed for some reason while trying to process -a B<-e> switch. Maybe your /tmp partition is full, or clobbered. +(F) The mkstemp() routine failed for some reason while trying to +process a B<-e> switch. Maybe your temporary file partition +is full, or over-protected, or clobbered. + +=item Can't mktemp() temporary file %s + +(F) The mktemp() routine failed for some reason while trying to +process a B<-e> switch. Maybe your temporary file partition +is full, or over-protected, or clobbered. =item Can't modify %s in %s @@ -899,10 +906,11 @@ Perhaps you need to copy the value to a temporary, and repeat that. (F) A string of a form C<CORE::word> was given to prototype(), but there is no builtin with the name C<word>. -=item Cannot open temporary file +=item Cannot open temporary file %s -(F) The create routine failed for some reason while trying to process -a B<-e> switch. Maybe your /tmp partition is full, or clobbered. +(F) A temporary file could not created for some reason while trying to +process a B<-e> switch. Maybe your temporary file partition is full, +or over-protected, or clobbered. =item Cannot resolve method `%s' overloading `%s' in package `%s' @@ -3795,11 +3795,23 @@ PP(pp_gprotoent) struct protoent *pent; if (which == OP_GPBYNAME) +#ifdef HAS_GETPROTOBYNAME pent = PerlSock_getprotobyname(POPp); +#else + DIE(no_sock_func, "getprotobyname"); +#endif else if (which == OP_GPBYNUMBER) +#ifdef HAS_GETPROTOBYNUMBER pent = PerlSock_getprotobynumber(POPi); +#else + DIE(no_sock_func, "getprotobynumber"); +#endif else +#ifdef HAS_GETPROTOENT pent = PerlSock_getprotoent(); +#else + DIE(no_sock_func, "getprotoent"); +#endif EXTEND(SP, 3); if (GIMME != G_ARRAY) { @@ -3885,7 +3897,11 @@ PP(pp_gservent) sent = PerlSock_getservbyport(port, proto); } else +#ifdef HAS_GETSERVENT sent = PerlSock_getservent(); +#else + DIE(no_sock_func, "getservent"); +#endif EXTEND(SP, 4); if (GIMME != G_ARRAY) { diff --git a/vms/config.vms b/vms/config.vms index 0320012c72..3e6f5cdb0e 100644 --- a/vms/config.vms +++ b/vms/config.vms @@ -1937,11 +1937,11 @@ */ #define Netdb_net_t long -/* HAS_GETHBADD: +/* HAS_GETHOSTBYADDR: * This symbol, if defined, indicates that the gethostbyaddr routine is * available to lookup host names by their IP addresses. */ -#define HAS_GETHBADD /**/ /* config-skip */ +#define HAS_GETHBYADDR /**/ /* config-skip */ /* Gethbadd_addr_t: * This symbol holds the type used for the 1st argument @@ -1956,11 +1956,11 @@ #define Gethbadd_alen_t int /**/ /* config-skip */ #ifdef DECCRTL_SOCKETS -/* HAS_GETNBADD: +/* HAS_GETNETBYADDR: * This symbol, if defined, indicates that the getnetbyaddr routine is * available to lookup networks by their IP addresses. */ -#define HAS_GETNBADD /**/ /* config-skip */ +#define HAS_GETNETBYADDR /**/ /* config-skip */ /* Gethbadd_net_t: * This symbol holds the type used for the 1st argument @@ -1968,7 +1968,7 @@ */ #define Getnbadd_net_t long /**/ /* config-skip */ #else -#undef HAS_GETNBADD /**/ /* config-skip */ +#undef HAS_GETNETBYADDR /**/ /* config-skip */ #undef Getnbadd_net_t long /**/ /* config-skip */ #endif @@ -2010,8 +2010,8 @@ #undef I_NETDB /**/ /* config-skip */ #undef I_NET_ERRNO /**/ /* config-skip */ #undef HAS_SELECT /**/ /* config-skip */ -#undef HAS_GETHBADD /**/ /* config-skip */ -#undef HAS_GETNBADD /**/ /* config-skip */ +#undef HAS_GETHOSTBYADDR /**/ /* config-skip */ +#undef HAS_GETNETBYADDR /**/ /* config-skip */ #endif /* !VMS_DO_SOCKETS */ |