MSG_PROXY for GNU/Hurd (previously we believed that
Jarkko Hietaniemi [Sun, 22 Nov 1998 18:21:07 +0000 (18:21 +0000)]
all GNU libc platforms have MSG_PROXY.  Untrue).
In fact this ended up as a major MSG_* and SCM_*
update.  The MSG_XXX known to be enums in some
versions of the glibc are now probed for and respective
HAS_MSG_XXX are defined.  While I was at it I noticed
SCM_RIGHTS being similarly an enum.  This reminded me of
an ancient discussion in perl5-porters:
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/9612/msg01017.html
The BSD socket interface has a nifty feature for passing
file descriptors and credentials--via sockets.  It may be
too late to add this functionality to the CORE but
at least Configure now probes for the functions,
structs, and includes, defining the appropriate
HAS_YYY and I_ZZZ, and the Socket extension exports
the constants, in case somebody wants to write an
extension for this interface.

p4raw-id: //depot/cfgperl@2285

Configure
Porting/Glossary
Porting/config.sh
Porting/config_H
config_h.SH
ext/Socket/Socket.pm
ext/Socket/Socket.xs
iperlsys.h

index 3726734..10b5331 100755 (executable)
--- 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 12 19:00:08 EET 1998 [metaconfig 3.0 PL70]
+# Generated on Sun Nov 22 19:12:18 EET 1998 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by jhi@iki.fi)
 
 cat >/tmp/c1$$ <<EOF
@@ -419,6 +419,7 @@ d_rewinddir=''
 d_seekdir=''
 d_telldir=''
 d_readlink=''
+d_readv=''
 d_rename=''
 d_rmdir=''
 d_safebcpy=''
@@ -464,7 +465,17 @@ d_shmdt=''
 d_shmget=''
 d_sigaction=''
 d_sigsetjmp=''
+d_cmsghdr_s=''
+d_msg_ctrunc=''
+d_msg_dontroute=''
+d_msg_oob=''
+d_msg_peek=''
+d_msg_proxy=''
+d_msghdr_s=''
 d_oldsock=''
+d_recvmsg=''
+d_scm_rights=''
+d_sendmsg=''
 d_socket=''
 d_sockpair=''
 sockethdr=''
@@ -518,6 +529,7 @@ d_wait4=''
 d_waitpid=''
 d_wcstombs=''
 d_wctomb=''
+d_writev=''
 d_dbmclose64=''
 d_dbminit64=''
 d_delete64=''
@@ -598,6 +610,8 @@ i_sysselct=''
 i_sysstat=''
 i_systimes=''
 i_systypes=''
+d_iovec_s=''
+i_sysuio=''
 i_sysun=''
 i_syswait=''
 i_sgtty=''
@@ -617,8 +631,8 @@ i_vfork=''
 intsize=''
 longsize=''
 shortsize=''
-d_dirent64s=''
-d_flock64s=''
+d_dirent64_s=''
+d_flock64_s=''
 d_fstat64=''
 d_ftruncate64=''
 d_ino64t=''
@@ -6734,6 +6748,145 @@ eval $inlibc
 set chsize d_chsize
 eval $inlibc
 
+hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
+while $test $# -ge 2; do
+       case "$1" in
+       $define) echo "#include <$2>";;
+       esac ;
+    shift 2;
+done > try.c;
+echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
+if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
+       val="$define";
+else
+       val="$undef";
+fi;
+set $varname;
+eval $setvar;
+$rm -f try.c try.o'
+
+: see if this is a sys/uio.h system
+set sys/uio.h i_sysuio
+eval $inhdr
+
+echo "Checking to see if your system supports struct iovec..." >&4
+set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
+eval $hasfield
+case "$d_iovec_s" in
+"$define")      echo "Yup, it does." >&4
+                ;;
+*)              echo "Nope, it doesn't." >&4
+                ;;
+esac
+
+socketlib=''
+sockethdr=''
+: see whether socket exists
+echo " "
+$echo $n "Hmm... $c" >&4
+if set socket val -f d_socket; eval $csym; $val; then
+       echo "Looks like you have Berkeley networking support." >&4
+       d_socket="$define"
+       if set setsockopt val -f; eval $csym; $val; then
+               d_oldsock="$undef"
+       else
+               echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
+               d_oldsock="$define"
+       fi
+else
+       if $contains socklib libc.list >/dev/null 2>&1; then
+               echo "Looks like you have Berkeley networking support." >&4
+               d_socket="$define"
+               : we will have to assume that it supports the 4.2 BSD interface
+               d_oldsock="$undef"
+       else
+               echo "You don't have Berkeley networking in libc$_a..." >&4
+               if test "X$d_socket" = "X$define"; then
+                  echo "...but you seem to believe that you have sockets." >&4
+               else
+                       for net in net socket
+                       do
+                               if test -f /usr/lib/lib$net$_a; then
+                                       ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
+                                       $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
+                                       if $contains socket libc.list >/dev/null 2>&1; then
+                                               d_socket="$define"
+                                               socketlib="-l$net"
+                                               case "$net" in
+                                               net)
+                                                       echo "...but the Wollongong group seems to have hacked it in." >&4
+                                                       sockethdr="-I/usr/netinclude"
+                                                       ;;
+                                               esac
+                                               echo "Found Berkeley sockets interface in lib$net." >& 4 
+                                               if $contains setsockopt libc.list >/dev/null 2>&1; then
+                                                       d_oldsock="$undef"
+                                               else
+                                                       echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
+                                                       d_oldsock="$define"
+                                               fi
+                                               break
+                                       fi
+                               fi
+                       done
+                       if test "X$d_socket" != "X$define"; then
+                          echo "or anywhere else I see." >&4
+                          d_socket="$undef"
+                          d_oldsock="$undef"
+                       fi
+               fi
+       fi
+fi
+
+: see if socketpair exists
+set socketpair d_sockpair
+eval $inlibc
+
+
+echo "Checking the availability of certain socket constants..." >& 4
+for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
+       enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
+       $cat >try.c <<EOF
+#include <sys/socket.h>
+int main() {
+    int i = $ENUM;
+}
+EOF
+       val="$undef"
+       set try; if eval $compile; then
+               val="$define"
+       fi
+       set d_${enum}; eval $setvar
+       $rm -f try.c try
+done
+
+set sendmsg d_sendmsg
+eval $inlibc
+
+set recvmsg d_recvmsg
+eval $inlibc
+
+echo " "
+$echo $n "Checking to see if your system supports struct msghdr...$c" >&4
+set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
+eval $hasfield
+case "$d_msghdr_s" in
+"$define")      echo "Yup, it does." >&4
+                ;;
+*)              echo "Nope, it doesn't." >&4
+                ;;
+esac
+
+$echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
+set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
+eval $hasfield
+case "$d_cmsghdr_s" in
+"$define")      echo "Yup, it does." >&4
+                ;;
+*)              echo "Nope, it doesn't." >&4
+                ;;
+esac
+
 : check for const keyword
 echo " "
 echo 'Checking to see if your C compiler knows about "const"...' >&4
@@ -6953,23 +7106,6 @@ set d_dirnamlen
 eval $setvar
 $rm -f try.c
 
-hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
-while $test $# -ge 2; do
-       case "$1" in
-       $define) echo "#include <$2>";;
-       esac ;
-    shift 2;
-done > try.c;
-echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
-if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
-       val="$define";
-else
-       val="$undef";
-fi;
-set $varname;
-eval $setvar;
-$rm -f try.c try.o'
-
 
 if $test X"$use64bits" = X"$define"; then
        : see if fstat64 exists
@@ -7067,14 +7203,14 @@ EOCP
        echo " "
        echo "Checking to see if your system supports struct flock64..." >&4
        if $h_fcntl; then
-               set d_flock64s flock64 l_len define fcntl.h
+               set d_flock64_s flock64 l_len define fcntl.h
                eval $hasfield
        else
                val="$undef"
-               set d_flock64s
+               set d_flock64_s
                eval $setvar
        fi
-       case "$d_flock64s" in
+       case "$d_flock64_s" in
        "$define")      echo "Yup, it does." >&4
                        ;;
        *)              echo "Nope, it doesn't." >&4
@@ -7084,9 +7220,9 @@ EOCP
        : check for struct dirent64
        echo " "
        echo "Checking to see if your system supports struct dirent64..." >&4
-       set d_dirent64s dirent64 d_off $i_dirent dirent.h
+       set d_dirent64_s dirent64 d_off $i_dirent dirent.h
        eval $hasfield
-       case "$d_flock64s" in
+       case "$d_dirent64_s" in
        "$define")      echo "Yup, it does." >&4
                        ;;
        *)              echo "Nope, it doesn't." >&4
@@ -7095,7 +7231,7 @@ EOCP
 
 else
        val="$undef"
-       for xxx in d_fstat64 d_ftruncate64 d_lockf64 d_lseek64 d_lstat64 d_open64 d_opendir64 d_readdir64 d_seekdir64 d_stat64 d_telldir64 d_truncate64 d_off64t d_ino64t d_flock64s d_dirent64s
+       for xxx in d_fstat64 d_ftruncate64 d_lockf64 d_lseek64 d_lstat64 d_open64 d_opendir64 d_readdir64 d_seekdir64 d_stat64 d_telldir64 d_truncate64 d_off64t d_ino64t d_flock64_s d_dirent64_s
        do
                set $xxx
                eval $setvar
@@ -7513,69 +7649,6 @@ eval $inlibc
 set fcntl d_fcntl
 eval $inlibc
 
-socketlib=''
-sockethdr=''
-: see whether socket exists
-echo " "
-$echo $n "Hmm... $c" >&4
-if set socket val -f d_socket; eval $csym; $val; then
-       echo "Looks like you have Berkeley networking support." >&4
-       d_socket="$define"
-       if set setsockopt val -f; eval $csym; $val; then
-               d_oldsock="$undef"
-       else
-               echo "...but it uses the old BSD 4.1c interface, rather than 4.2" >&4
-               d_oldsock="$define"
-       fi
-else
-       if $contains socklib libc.list >/dev/null 2>&1; then
-               echo "Looks like you have Berkeley networking support." >&4
-               d_socket="$define"
-               : we will have to assume that it supports the 4.2 BSD interface
-               d_oldsock="$undef"
-       else
-               echo "You don't have Berkeley networking in libc$_a..." >&4
-               if test "X$d_socket" = "X$define"; then
-                  echo "...but you seem to believe that you have sockets." >&4
-               else
-                       for net in net socket
-                       do
-                               if test -f /usr/lib/lib$net$_a; then
-                                       ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
-                                       $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
-                                       if $contains socket libc.list >/dev/null 2>&1; then
-                                               d_socket="$define"
-                                               socketlib="-l$net"
-                                               case "$net" in
-                                               net)
-                                                       echo "...but the Wollongong group seems to have hacked it in." >&4
-                                                       sockethdr="-I/usr/netinclude"
-                                                       ;;
-                                               esac
-                                               echo "Found Berkeley sockets interface in lib$net." >& 4 
-                                               if $contains setsockopt libc.list >/dev/null 2>&1; then
-                                                       d_oldsock="$undef"
-                                               else
-                                                       echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
-                                                       d_oldsock="$define"
-                                               fi
-                                               break
-                                       fi
-                               fi
-                       done
-                       if test "X$d_socket" != "X$define"; then
-                          echo "or anywhere else I see." >&4
-                          d_socket="$undef"
-                          d_oldsock="$undef"
-                       fi
-               fi
-       fi
-fi
-
-: see if socketpair exists
-set socketpair d_sockpair
-eval $inlibc
-
 : see if sys/select.h has to be included
 set sys/select.h i_sysselct
 eval $inhdr
@@ -8735,6 +8808,10 @@ eval $inlibc
 set readlink d_readlink
 eval $inlibc
 
+: see if readv exists
+set readv d_readv
+eval $inlibc
+
 : see if rename exists
 set rename d_rename
 eval $inlibc
@@ -9989,6 +10066,10 @@ eval $inlibc
 set wctomb d_wctomb
 eval $inlibc
 
+: see if writev exists
+set writev d_writev
+eval $inlibc
+
 : preserve RCS keywords in files with variable substitution, grrr
 Date='$Date'
 Id='$Id'
@@ -10384,6 +10465,7 @@ $rm -f try.* .out
 
 : How can we generate normalized random numbers ?
 echo " "
+echo "Looking for a random number function..." >&4
 case "$randfunc" in
 '')
        if set drand48 val -f; eval $csym; $val; then
@@ -10426,7 +10508,7 @@ while $test "$cont"; do
                cont=''
        else
                dflt=n
-               rp="Function $ans does not exists. Use that name anyway?"
+               rp="Function $ans does not exist. Use that name anyway?"
                . ./myread
                dflt=rand
                case "$ans" in
@@ -12296,6 +12378,7 @@ d_chown='$d_chown'
 d_chroot='$d_chroot'
 d_chsize='$d_chsize'
 d_closedir='$d_closedir'
+d_cmsghdr_s='$d_cmsghdr_s'
 d_const='$d_const'
 d_crypt='$d_crypt'
 d_csh='$d_csh'
@@ -12305,7 +12388,7 @@ d_dbmclose64='$d_dbmclose64'
 d_dbminit64='$d_dbminit64'
 d_delete64='$d_delete64'
 d_difftime='$d_difftime'
-d_dirent64s='$d_dirent64s'
+d_dirent64_s='$d_dirent64_s'
 d_dirnamlen='$d_dirnamlen'
 d_dlerror='$d_dlerror'
 d_dlopen='$d_dlopen'
@@ -12333,7 +12416,7 @@ d_fgetpos64='$d_fgetpos64'
 d_fgetpos='$d_fgetpos'
 d_firstkey64='$d_firstkey64'
 d_flexfnam='$d_flexfnam'
-d_flock64s='$d_flock64s'
+d_flock64_s='$d_flock64_s'
 d_flock='$d_flock'
 d_fopen64='$d_fopen64'
 d_fork='$d_fork'
@@ -12384,6 +12467,7 @@ d_index='$d_index'
 d_inetaton='$d_inetaton'
 d_ino64t='$d_ino64t'
 d_int64t='$d_int64t'
+d_iovec_s='$d_iovec_s'
 d_isascii='$d_isascii'
 d_killpg='$d_killpg'
 d_lchown='$d_lchown'
@@ -12407,8 +12491,14 @@ d_mkdir='$d_mkdir'
 d_mkfifo='$d_mkfifo'
 d_mktime='$d_mktime'
 d_msg='$d_msg'
+d_msg_ctrunc='$d_msg_ctrunc'
+d_msg_dontroute='$d_msg_dontroute'
+d_msg_oob='$d_msg_oob'
+d_msg_peek='$d_msg_peek'
+d_msg_proxy='$d_msg_proxy'
 d_msgctl='$d_msgctl'
 d_msgget='$d_msgget'
+d_msghdr_s='$d_msghdr_s'
 d_msgrcv='$d_msgrcv'
 d_msgsnd='$d_msgsnd'
 d_mymalloc='$d_mymalloc'
@@ -12439,6 +12529,8 @@ d_pwquota='$d_pwquota'
 d_readdir64='$d_readdir64'
 d_readdir='$d_readdir'
 d_readlink='$d_readlink'
+d_readv='$d_readv'
+d_recvmsg='$d_recvmsg'
 d_rename='$d_rename'
 d_rewinddir='$d_rewinddir'
 d_rmdir='$d_rmdir'
@@ -12446,6 +12538,7 @@ d_safebcpy='$d_safebcpy'
 d_safemcpy='$d_safemcpy'
 d_sanemcmp='$d_sanemcmp'
 d_sched_yield='$d_sched_yield'
+d_scm_rights='$d_scm_rights'
 d_seekdir64='$d_seekdir64'
 d_seekdir='$d_seekdir'
 d_select='$d_select'
@@ -12455,6 +12548,7 @@ d_semctl_semid_ds='$d_semctl_semid_ds'
 d_semctl_semun='$d_semctl_semun'
 d_semget='$d_semget'
 d_semop='$d_semop'
+d_sendmsg='$d_sendmsg'
 d_setegid='$d_setegid'
 d_seteuid='$d_seteuid'
 d_setgrent='$d_setgrent'
@@ -12535,6 +12629,7 @@ d_wait4='$d_wait4'
 d_waitpid='$d_waitpid'
 d_wcstombs='$d_wcstombs'
 d_wctomb='$d_wctomb'
+d_writev='$d_writev'
 d_xenix='$d_xenix'
 date='$date'
 db_hashtype='$db_hashtype'
@@ -12621,6 +12716,7 @@ i_systime='$i_systime'
 i_systimek='$i_systimek'
 i_systimes='$i_systimes'
 i_systypes='$i_systypes'
+i_sysuio='$i_sysuio'
 i_sysun='$i_sysun'
 i_syswait='$i_syswait'
 i_termio='$i_termio'
index d19328c..8159c04 100644 (file)
@@ -329,6 +329,10 @@ d_closedir (d_closedir.U):
        This variable conditionally defines HAS_CLOSEDIR if closedir() is
        available.
 
+d_cmsghdr_s (d_socket.U):
+       This variable conditionally defines the HAS_STRUCT_CMSGHDR symbol,
+       which indicates that the the struct cmsghdr is supported.
+
 d_const (d_const.U):
        This variable conditionally defines the HASCONST symbol, which
        indicates to the C program that this C compiler knows about the
@@ -369,7 +373,7 @@ d_difftime (d_difftime.U):
        This variable conditionally defines the HAS_DIFFTIME symbol, which
        indicates to the C program that the difftime() routine is available.
 
-d_dirent64s (io64.U):
+d_dirent64_s (io64.U):
        This symbol will be defined if the C compiler supports struct dirent64.
 
 d_dirnamlen (i_dirent.U):
@@ -493,7 +497,7 @@ d_flexfnam (d_flexfnam.U):
        This variable conditionally defines the FLEXFILENAMES symbol, which
        indicates that the system supports filenames longer than 14 characters.
 
-d_flock64s (io64.U):
+d_flock64_s (io64.U):
        This symbol will be defined if the C compiler supports struct flock64.
 
 d_flock (d_flock.U):
@@ -735,6 +739,10 @@ d_ino64t (io64.U):
 d_int64t (i_inttypes.U):
            This symbol will be defined if the C compiler supports int64_t.
 
+d_iovec_s (i_sysuio.U):
+       This variable conditionally defines the HAS_STRUCT_IOVEC symbol,
+       which indicates that the struct iovec is supported.
+
 d_isascii (d_isascii.U):
        This variable conditionally defines the HAS_ISASCII constant,
        which indicates to the C program that isascii() is available.
@@ -837,6 +845,31 @@ d_msg (d_msg.U):
        This variable conditionally defines the HAS_MSG symbol, which
        indicates that the entire msg*(2) library is present.
 
+d_msg_ctrunc (d_socket.U):
+       This variable conditionally defines the HAS_MSG_CTRUNC symbol,
+       which indicates that the MSG_CTRUNC is available.  #ifdef is
+       not enough because it may be an enum, glibc has been known to do this.
+
+d_msg_dontroute (d_socket.U):
+       This variable conditionally defines the HAS_MSG_DONTROUTE symbol,
+       which indicates that the MSG_DONTROUTE is available.  #ifdef is
+       not enough because it may be an enum, glibc has been known to do this.
+
+d_msg_oob (d_socket.U):
+       This variable conditionally defines the HAS_MSG_OOB symbol,
+       which indicates that the MSG_OOB is available.  #ifdef is
+       not enough because it may be an enum, glibc has been known to do this.
+
+d_msg_peek (d_socket.U):
+       This variable conditionally defines the HAS_MSG_PEEK symbol,
+       which indicates that the MSG_PEEK is available.  #ifdef is
+       not enough because it may be an enum, glibc has been known to do this.
+
+d_msg_proxy (d_socket.U):
+       This variable conditionally defines the HAS_MSG_PROXY symbol,
+       which indicates that the MSG_PROXY is available.  #ifdef is
+       not enough because it may be an enum, glibc has been known to do this.
+
 d_msgctl (d_msgctl.U):
        This variable conditionally defines the HAS_MSGCTL symbol, which
        indicates to the C program that the msgctl() routine is available.
@@ -845,6 +878,10 @@ d_msgget (d_msgget.U):
        This variable conditionally defines the HAS_MSGGET symbol, which
        indicates to the C program that the msgget() routine is available.
 
+d_msghdr_s (d_socket.U):
+       This variable conditionally defines the HAS_STRUCT_MSGHDR symbol,
+       which indicates that the struct msghdr is supported.
+
 d_msgrcv (d_msgrcv.U):
        This variable conditionally defines the HAS_MSGRCV symbol, which
        indicates to the C program that the msgrcv() routine is available.
@@ -977,6 +1014,14 @@ d_readlink (d_readlink.U):
        indicates to the C program that the readlink() routine is available
        to read the value of a symbolic link.
 
+d_readv (d_readv.U):
+       This variable conditionally defines the HAS_READV symbol, which
+       indicates to the C program that the readv() routine is available.
+
+d_recvmsg (d_socket.U):
+       This variable conditionally defines the HAS_RECVMSG symbol,
+       which indicates that the recvmsg is supported.
+
 d_rename (d_rename.U):
        This variable conditionally defines the HAS_RENAME symbol, which
        indicates to the C program that the rename() routine is available
@@ -1008,6 +1053,11 @@ d_sched_yield (d_pthread_y.U):
        symbol if the sched_yield routine is available to yield
        the execution of the current thread.
 
+d_scm_rights (d_socket.U):
+       This variable conditionally defines the HAS_SCM_RIGHTS symbol,
+       which indicates that the SCM_RIGHTS is available.  #ifdef is
+       not enough because it may be an enum, glibc has been known to do this.
+
 d_seekdir64 (io64.U):
        This variable conditionally defines the HAS_SEEKDIR64 symbol, which
        indicates to the C program that the seekdir64() routine is available.
@@ -1045,6 +1095,10 @@ d_semop (d_semop.U):
        This variable conditionally defines the HAS_SEMOP symbol, which
        indicates to the C program that the semop() routine is available.
 
+d_sendmsg (d_socket.U):
+       This variable conditionally defines the HAS_SENDMSG symbol,
+       which indicates that the sendmsg is supported.
+
 d_setegid (d_setegid.U):
        This variable conditionally defines the HAS_SETEGID symbol, which
        indicates to the C program that the setegid() routine is available
@@ -1406,6 +1460,10 @@ d_wctomb (d_wctomb.U):
        indicates to the C program that the wctomb() routine is available
        to convert a wide character to a multibyte.
 
+d_writev (d_writev.U):
+       This variable conditionally defines the HAS_WRITEV symbol, which
+       indicates to the C program that the writev() routine is available.
+
 d_xenix (Guess.U):
        This variable conditionally defines the symbol XENIX, which alerts
        the C program that it runs under Xenix.
@@ -1796,6 +1854,10 @@ i_systypes (i_systypes.U):
        This variable conditionally defines the I_SYS_TYPES symbol,
        and indicates whether a C program should include <sys/types.h>.
 
+i_sysuio (i_sysuio.U):
+       This variable conditionally defines the I_SYSUIO symbol, and indicates
+       whether a C program should include <sys/uio.h>.
+
 i_sysun (i_sysun.U):
        This variable conditionally defines I_SYS_UN, which indicates
        to the C program that it should include <sys/un.h> to get UNIX
index 25c25cf..dda3c3a 100644 (file)
@@ -8,7 +8,7 @@
 
 # Package name      : perl5
 # Source directory  : .
-# Configuration time: Thu Nov  5 12:26:24 EET 1998
+# Configuration time: Sun Nov 22 19:19:34 EET 1998
 # Configured by     : jhi
 # Target system     : osf1 alpha.hut.fi v4.0 878 alpha 
 
@@ -54,7 +54,7 @@ ccdlflags=' '
 ccflags='-pthread -std -D__LANGUAGE_C__'
 cf_by='jhi'
 cf_email='yourname@yourhost.yourplace.com'
-cf_time='Thu Nov  5 12:26:24 EET 1998'
+cf_time='Sun Nov 22 19:19:34 EET 1998'
 chgrp=''
 chmod=''
 chown=''
@@ -92,6 +92,7 @@ d_chown='define'
 d_chroot='define'
 d_chsize='undef'
 d_closedir='define'
+d_cmsghdr_s='define'
 d_const='define'
 d_crypt='define'
 d_csh='define'
@@ -101,7 +102,7 @@ d_dbmclose64='undef'
 d_dbminit64='undef'
 d_delete64='undef'
 d_difftime='define'
-d_dirent64s='undef'
+d_dirent64_s='undef'
 d_dirnamlen='define'
 d_dlerror='define'
 d_dlopen='define'
@@ -129,7 +130,7 @@ d_fgetpos64='undef'
 d_fgetpos='define'
 d_firstkey64='undef'
 d_flexfnam='define'
-d_flock64s='undef'
+d_flock64_s='undef'
 d_flock='define'
 d_fopen64='undef'
 d_fork='define'
@@ -180,6 +181,7 @@ d_index='undef'
 d_inetaton='define'
 d_ino64t='undef'
 d_int64t='undef'
+d_iovec_s='define'
 d_isascii='define'
 d_killpg='define'
 d_lchown='define'
@@ -203,8 +205,14 @@ d_mkdir='define'
 d_mkfifo='define'
 d_mktime='define'
 d_msg='define'
+d_msg_ctrunc='define'
+d_msg_dontroute='define'
+d_msg_oob='define'
+d_msg_peek='define'
+d_msg_proxy='undef'
 d_msgctl='define'
 d_msgget='define'
+d_msghdr_s='define'
 d_msgrcv='define'
 d_msgsnd='define'
 d_mymalloc='undef'
@@ -235,6 +243,8 @@ d_pwquota='define'
 d_readdir64='undef'
 d_readdir='define'
 d_readlink='define'
+d_readv='define'
+d_recvmsg='define'
 d_rename='define'
 d_rewinddir='define'
 d_rmdir='define'
@@ -242,6 +252,7 @@ d_safebcpy='define'
 d_safemcpy='undef'
 d_sanemcmp='define'
 d_sched_yield='define'
+d_scm_rights='define'
 d_seekdir64='undef'
 d_seekdir='define'
 d_select='define'
@@ -251,6 +262,7 @@ d_semctl_semid_ds='define'
 d_semctl_semun='define'
 d_semget='define'
 d_semop='define'
+d_sendmsg='define'
 d_setegid='define'
 d_seteuid='define'
 d_setgrent='define'
@@ -331,6 +343,7 @@ d_wait4='define'
 d_waitpid='define'
 d_wcstombs='define'
 d_wctomb='define'
+d_writev='define'
 d_xenix='undef'
 date='date'
 db_hashtype='u_int32_t'
@@ -417,6 +430,7 @@ i_systime='define'
 i_systimek='undef'
 i_systimes='define'
 i_systypes='define'
+i_sysuio='define'
 i_sysun='define'
 i_syswait='define'
 i_termio='undef'
index 97b5300..9fa28d8 100644 (file)
@@ -17,7 +17,7 @@
 /*
  * Package name      : perl5
  * Source directory  : .
- * Configuration time: Thu Nov  5 13:03:49 EET 1998
+ * Configuration time: Sun Nov 22 19:19:34 EET 1998
  * Configured by     : jhi
  * Target system     : osf1 alpha.hut.fi v4.0 878 alpha 
  */
  *     This symbol, if defined, indicates that the BSD socketpair() call is
  *     supported.
  */
-#define HAS_SOCKET             /**/
-#define HAS_SOCKETPAIR /**/
+/* HAS_MSG_CTRUNC:
+ *     This symbol, if defined, indicates that the MSG_CTRUNC is supported.
+ *     Checking just with #ifdef might not be enough because this symbol
+ *     has been known to be an enum.
+ */
+/* HAS_MSG_DONTROUTE:
+ *     This symbol, if defined, indicates that the MSG_DONTROUTE is supported.
+ *     Checking just with #ifdef might not be enough because this symbol
+ *     has been known to be an enum.
+ */
+/* HAS_MSG_OOB:
+ *     This symbol, if defined, indicates that the MSG_OOB is supported.
+ *     Checking just with #ifdef might not be enough because this symbol
+ *     has been known to be an enum.
+ */
+/* HAS_MSG_PEEK:
+ *     This symbol, if defined, indicates that the MSG_PEEK is supported.
+ *     Checking just with #ifdef might not be enough because this symbol
+ *     has been known to be an enum.
+ */
+/* HAS_MSG_PROXY:
+ *     This symbol, if defined, indicates that the MSG_PROXY is supported.
+ *     Checking just with #ifdef might not be enough because this symbol
+ *     has been known to be an enum.
+ */
+/* HAS_SCM_RIGHTS:
+ *     This symbol, if defined, indicates that the SCM_RIGHTS is supported.
+ *     Checking just with #ifdef might not be enough because this symbol
+ *     has been known to be an enum.
+ */
+/* HAS_SENDMSG:
+ *     This symbol, if defined, indicates that the sendmsg is supported
+ *     to send messages between sockets.  You will also need struct
+ *     iovec from <sys/uio.h>, HAS_STRUCT_IOVEC and I_SYSUIO.
+ */
+/* HAS_RECVMSG:
+ *     This symbol, if defined, indicates that the recvmsg is supported
+ *     to send messages between sockets.  You will also need struct
+ *     iovec from <sys/uio.h>, HAS_STRUCT_IOVEC and I_SYSUIO.
+ */
+/* HAS_STRUCT_MSGHDR:
+ *     This symbol, if defined, indicates that the struct msghdr
+ *     (BSD 4.3 or 4.4) is supported.  You will also need struct
+ *     iovec from <sys/uio.h>, HAS_STRUCT_IOVEC and I_SYSUIO.
+ */
+/* HAS_STRUCT_CMSGHDR:
+ *     This symbol, if defined, indicates that the struct cmsghdr
+ *     (BSD 4.4) is supported.  You will also need struct
+ *     iovec from <sys/uio.h>, HAS_STRUCT_IOVEC and I_SYSUIO.
+ */
+#define        HAS_SOCKET              /**/
+#define        HAS_SOCKETPAIR  /**/
+#define        HAS_MSG_CTRUNC  /**/
+#define        HAS_MSG_DONTROUTE       /**/
+#define        HAS_MSG_OOB     /**/
+#define        HAS_MSG_PEEK    /**/
+/*#define      HAS_MSG_PROXY   / **/
+#define        HAS_SCM_RIGHTS  /**/
+#define        HAS_SENDMSG     /**/
+#define        HAS_RECVMSG     /**/
+#define        HAS_STRUCT_MSGHDR       /**/
+#define        HAS_STRUCT_CMSGHDR      /**/
 
 /* USE_STAT_BLOCKS:
  *     This symbol is defined if this system has a stat structure declaring
 #define PWGECOS        /**/
 #define PWPASSWD       /**/
 
+/* I_SYSUIO:
+ *     This symbol, if defined, indicates that <sys/uio.h> exists and
+ *     should be included.
+ */
+#define        I_SYSUIO                /**/
+
 /* Free_t:
  *     This variable contains the return type of free().  It is usually
  * void, but occasionally int.
  */
 /*#define HAS_FTELLO           / **/
 
+/* HAS_READV:
+ *     This symbol, if defined, indicates that the readv routine is
+ *     available to do gather reads.  You will also need <sys/uio.h>
+ *     and there I_SYSUIO.
+ */
+#define HAS_READV              /**/
+
 /* USE_SFIO:
  *     This symbol, if defined, indicates that sfio should
  *     be used.
  */
 /*#define      USE_SFIO                / **/
 
+/* HAS_WRITEV:
+ *     This symbol, if defined, indicates that the writev routine is
+ *     available to do scatter writes.
+ */
+#define HAS_WRITEV             /**/
+
 /* HAS_DBMINIT64:
  *     This symbol, if defined, indicates that the dbminit64 routine is
  *     available to open dbm files larger than 2 gigabytes.
index f84775a..b70bf26 100644 (file)
@@ -1731,8 +1731,68 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  *     This symbol, if defined, indicates that the BSD socketpair() call is
  *     supported.
  */
-#$d_socket HAS_SOCKET          /**/
-#$d_sockpair HAS_SOCKETPAIR    /**/
+/* HAS_MSG_CTRUNC:
+ *     This symbol, if defined, indicates that the MSG_CTRUNC is supported.
+ *     Checking just with #ifdef might not be enough because this symbol
+ *     has been known to be an enum.
+ */
+/* HAS_MSG_DONTROUTE:
+ *     This symbol, if defined, indicates that the MSG_DONTROUTE is supported.
+ *     Checking just with #ifdef might not be enough because this symbol
+ *     has been known to be an enum.
+ */
+/* HAS_MSG_OOB:
+ *     This symbol, if defined, indicates that the MSG_OOB is supported.
+ *     Checking just with #ifdef might not be enough because this symbol
+ *     has been known to be an enum.
+ */
+/* HAS_MSG_PEEK:
+ *     This symbol, if defined, indicates that the MSG_PEEK is supported.
+ *     Checking just with #ifdef might not be enough because this symbol
+ *     has been known to be an enum.
+ */
+/* HAS_MSG_PROXY:
+ *     This symbol, if defined, indicates that the MSG_PROXY is supported.
+ *     Checking just with #ifdef might not be enough because this symbol
+ *     has been known to be an enum.
+ */
+/* HAS_SCM_RIGHTS:
+ *     This symbol, if defined, indicates that the SCM_RIGHTS is supported.
+ *     Checking just with #ifdef might not be enough because this symbol
+ *     has been known to be an enum.
+ */
+/* HAS_SENDMSG:
+ *     This symbol, if defined, indicates that the sendmsg is supported
+ *     to send messages between sockets.  You will also need struct
+ *     iovec from <sys/uio.h>, HAS_STRUCT_IOVEC and I_SYSUIO.
+ */
+/* HAS_RECVMSG:
+ *     This symbol, if defined, indicates that the recvmsg is supported
+ *     to send messages between sockets.  You will also need struct
+ *     iovec from <sys/uio.h>, HAS_STRUCT_IOVEC and I_SYSUIO.
+ */
+/* HAS_STRUCT_MSGHDR:
+ *     This symbol, if defined, indicates that the struct msghdr
+ *     (BSD 4.3 or 4.4) is supported.  You will also need struct
+ *     iovec from <sys/uio.h>, HAS_STRUCT_IOVEC and I_SYSUIO.
+ */
+/* HAS_STRUCT_CMSGHDR:
+ *     This symbol, if defined, indicates that the struct cmsghdr
+ *     (BSD 4.4) is supported.  You will also need struct
+ *     iovec from <sys/uio.h>, HAS_STRUCT_IOVEC and I_SYSUIO.
+ */
+#$d_socket     HAS_SOCKET              /**/
+#$d_sockpair   HAS_SOCKETPAIR  /**/
+#$d_msg_ctrunc HAS_MSG_CTRUNC  /**/
+#$d_msg_dontroute      HAS_MSG_DONTROUTE       /**/
+#$d_msg_oob    HAS_MSG_OOB     /**/
+#$d_msg_peek   HAS_MSG_PEEK    /**/
+#$d_msg_proxy  HAS_MSG_PROXY   /**/
+#$d_scm_rights HAS_SCM_RIGHTS  /**/
+#$d_sendmsg    HAS_SENDMSG     /**/
+#$d_recvmsg    HAS_RECVMSG     /**/
+#$d_msghdr_s   HAS_STRUCT_MSGHDR       /**/
+#$d_cmsghdr_s  HAS_STRUCT_CMSGHDR      /**/
 
 /* USE_STAT_BLOCKS:
  *     This symbol is defined if this system has a stat structure declaring
@@ -1865,6 +1925,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
 #$d_pwgecos PWGECOS    /**/
 #$d_pwpasswd PWPASSWD  /**/
 
+/* I_SYSUIO:
+ *     This symbol, if defined, indicates that <sys/uio.h> exists and
+ *     should be included.
+ */
+#$i_sysuio     I_SYSUIO                /**/
+
 /* Free_t:
  *     This variable contains the return type of free().  It is usually
  * void, but occasionally int.
@@ -1972,12 +2038,25 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_ftello HAS_FTELLO          /**/
 
+/* HAS_READV:
+ *     This symbol, if defined, indicates that the readv routine is
+ *     available to do gather reads.  You will also need <sys/uio.h>
+ *     and there I_SYSUIO.
+ */
+#$d_readv HAS_READV            /**/
+
 /* USE_SFIO:
  *     This symbol, if defined, indicates that sfio should
  *     be used.
  */
 #$d_sfio       USE_SFIO                /**/
 
+/* HAS_WRITEV:
+ *     This symbol, if defined, indicates that the writev routine is
+ *     available to do scatter writes.
+ */
+#$d_writev HAS_WRITEV          /**/
+
 /* HAS_DBMINIT64:
  *     This symbol, if defined, indicates that the dbminit64 routine is
  *     available to open dbm files larger than 2 gigabytes.
@@ -2107,7 +2186,7 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
 #$d_telldir64   HAS_TELLDIR64  /**/
 #$d_truncate64  HAS_TRUNCATE64 /**/
 #$d_off64t      HAS_OFF64_T            /**/
-#$d_dirent64s   HAS_STRUCT_DIRENT64    /**/
+#$d_dirent64_s   HAS_STRUCT_DIRENT64   /**/
 
 /* PRIVLIB:
  *     This symbol contains the name of the private library for this package.
index 5a4870f..1ed19f7 100644 (file)
@@ -193,10 +193,25 @@ require DynaLoader;
        AF_UNIX
        AF_UNSPEC
        AF_X25
+       MSG_CTLFLAGS
+       MSG_CTLIGNORE
+       MSG_CTRUNC
        MSG_DONTROUTE
+       MSG_DONTWAIT
+       MSG_EOF
+       MSG_EOR
+       MSG_ERRQUEUE
+       MSG_FIN
        MSG_MAXIOVLEN
+       MSG_NOSIGNAL
        MSG_OOB
        MSG_PEEK
+       MSG_PROXY
+       MSG_RST
+       MSG_SYN
+       MSG_TRUNC
+       MSG_URG
+       MSG_WAITALL
        PF_802
        PF_APPLETALK
        PF_CCITT
@@ -221,6 +236,11 @@ require DynaLoader;
        PF_UNIX
        PF_UNSPEC
        PF_X25
+       SCM_CONNECT
+       SCM_CREDENTIALS
+       SCM_CREDS
+       SCM_RIGHTS
+       SCM_TIMESTAMP
        SOCK_DGRAM
        SOCK_RAW
        SOCK_RDM
index de0217b..f0ba57f 100644 (file)
@@ -330,42 +330,114 @@ constant(char *name, int arg)
     case 'L':
        break;
     case 'M':
+       if (strEQ(name, "MSG_CTLFLAGS"))
+#ifdef MSG_CTLFLAGS
+           return MSG_CTLFLAGS;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "MSG_CTLIGNORE"))
+#ifdef MSG_CTLIGNORE
+           return MSG_CTLIGNORE;
+#else
+           goto not_there;
+#endif
        if (strEQ(name, "MSG_CTRUNC"))
-#if defined(MSG_CTRUNC) || defined(HAS_GNULIBC) /* XXX it's an enum */
+#ifdef HAS_MSG_CTRUNC /* might be an enum */
            return MSG_CTRUNC;
 #else
            goto not_there;
 #endif
        if (strEQ(name, "MSG_DONTROUTE"))
-#if defined(MSG_DONTROUTE) || defined(HAS_GNULIBC) /* XXX it's an enum */
+#ifdef HAS_MSG_DONTROUTE /* might be an enum */
            return MSG_DONTROUTE;
 #else
            goto not_there;
 #endif
+       if (strEQ(name, "MSG_DONTWAIT"))
+#ifdef MSG_DONTWAIT
+           return MSG_DONTWAIT;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "MSG_EOF"))
+#ifdef MSG_EOF
+           return MSG_EOF;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "MSG_EOR"))
+#ifdef MSG_EOR
+           return MSG_EOR;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "MSG_ERRQUEUE"))
+#ifdef MSG_ERRQUEUE
+           return MSG_ERRQUEUE;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "MSG_FIN"))
+#ifdef MSG_FIN
+           return MSG_FIN;
+#else
+           goto not_there;
+#endif
        if (strEQ(name, "MSG_MAXIOVLEN"))
-#ifdef MSG_MAXIOVLEN
+#ifdef MSG_MAXIOVLEN /* might be an enum */
            return MSG_MAXIOVLEN;
 #else
            goto not_there;
 #endif
+       if (strEQ(name, "MSG_NOSIGNAL"))
+#ifdef MSG_NOSIGNAL
+           return MSG_NOSIGNAL;
+#else
+           goto not_there;
+#endif
        if (strEQ(name, "MSG_OOB"))
-#if defined(MSG_OOB) || defined(HAS_GNULIBC) /* XXX it's an enum */
+#ifdef HAS_MSG_OOB /* might be an enum */
            return MSG_OOB;
 #else
            goto not_there;
 #endif
        if (strEQ(name, "MSG_PEEK"))
-#if defined(MSG_PEEK) || defined(HAS_GNULIBC) /* XXX it's an enum */
+#ifdef HAS_MSG_PEEK /* might be an enum */
            return MSG_PEEK;
 #else
            goto not_there;
 #endif
        if (strEQ(name, "MSG_PROXY"))
-#if defined(MSG_PROXY) || defined(HAS_GNULIBC) /* XXX it's an enum */
+#ifdef HAS_MSG_PROXY /* might be an enum */
            return MSG_PROXY;
 #else
            goto not_there;
 #endif
+       if (strEQ(name, "MSG_RST"))
+#ifdef MSG_RST
+           return MSG_RST;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "MSG_SYN"))
+#ifdef MSG_SYN
+           return MSG_SYN;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "MSG_TRUNC"))
+#ifdef MSG_TRUNC
+           return MSG_TRUNC;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "MSG_WAITALL"))
+#ifdef MSG_WAITALL
+           return MSG_WAITALL;
+#else
+           goto not_there;
+#endif
        break;
     case 'N':
        break;
@@ -522,6 +594,36 @@ constant(char *name, int arg)
     case 'R':
        break;
     case 'S':
+       if (strEQ(name, "SCM_CONNECT"))
+#ifdef SCM_CONNECT
+           return SCM_CONNECT;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "SCM_CREDENTIALS"))
+#ifdef SCM_CREDENTIALS
+           return SCM_CREDENTIALSS;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "SCM_CREDS"))
+#ifdef SCM_CREDS
+           return SCM_CREDS;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "SCM_RIGHTS"))
+#ifdef HAS_SCM_RIGHTS /* might be an enum */
+           return SCM_RIGHTS;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "SCM_TIMESTAMP"))
+#ifdef SCM_TIMESTAMP
+           return SCM_TIMESTAMP;
+#else
+           goto not_there;
+#endif
        if (strEQ(name, "SOCK_DGRAM"))
 #ifdef SOCK_DGRAM
            return SOCK_DGRAM;
index 91389a2..6cb3206 100644 (file)
@@ -926,5 +926,22 @@ public:
 
 #endif /* PERL_OBJECT */
 
+/* Mention
+
+   HAS_READV
+   HAS_RECVMSG
+   HAS_SENDMSG
+   HAS_WRITEV
+   HAS_STRUCT_MSGHDR
+   HAS_STRUCT_CMSGHDR
+   I_SYSUIO
+
+   here so that Configure picks them up.  Perl core does not
+   use them but somebody might want to extend IO:: someday.
+
+   Jarkko Hietaniemi November 1998
+
+   */
+
 #endif /* __Inc__IPerl___ */