summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2001-04-05 17:47:01 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2001-04-05 17:47:01 +0000
commit4e0554ec1a41c5b5d840b8e29e149a0efe77a52c (patch)
tree2e4824f24217a8add58d57ace6c4f39ded1e4153
parent2ece6c116c30837778f908504e30526eeb0ade40 (diff)
downloadperl-4e0554ec1a41c5b5d840b8e29e149a0efe77a52c.tar.gz
Introduce d_u32align / U32_REQUIRES_ALIGNMENT, needed for
ext/Digest/MD5/Makefile.PL and t/lib/md5-align.t. Introduce probes for struct msghdr, struct cmsghdr, sendmsg, recvmsg, readv, writev, setitimer, getitimer, ualarm, usleep, for possible later extension work. p4raw-id: //depot/perl@9560
-rwxr-xr-xConfigure588
-rw-r--r--MANIFEST1
-rw-r--r--Porting/Glossary44
-rw-r--r--Porting/config.sh21
-rw-r--r--Porting/config_H69
-rw-r--r--config_h.SH67
-rw-r--r--configure.com5
-rw-r--r--epoc/config.sh9
-rw-r--r--ext/Digest/MD5/Makefile.PL5
-rw-r--r--perl.h19
-rw-r--r--t/lib/md5-align.t20
-rw-r--r--uconfig.h67
-rwxr-xr-xuconfig.sh11
-rw-r--r--vos/config.alpha.def10
-rw-r--r--vos/config.alpha.h67
-rw-r--r--vos/config.ga.def10
-rw-r--r--vos/config.ga.h67
-rw-r--r--win32/config.bc11
-rw-r--r--win32/config.gc11
-rw-r--r--win32/config.vc11
20 files changed, 887 insertions, 226 deletions
diff --git a/Configure b/Configure
index e170872f62..d2fe5bb082 100755
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
#
-# Generated on Tue Apr 3 04:12:27 EET DST 2001 [metaconfig 3.0 PL70]
+# Generated on Thu Apr 5 20:11:33 EET DST 2001 [metaconfig 3.0 PL70]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
@@ -324,6 +324,7 @@ d_chroot=''
d_chsize=''
d_closedir=''
d_void_closedir=''
+d_cmsghdr_s=''
d_const=''
cryptlib=''
d_crypt=''
@@ -381,6 +382,7 @@ d_gethname=''
d_phostname=''
d_uname=''
d_gethostprotos=''
+d_getitimer=''
d_getlogin=''
d_getmnt=''
d_getmntent=''
@@ -449,6 +451,7 @@ d_mprotect=''
d_msg=''
d_msgctl=''
d_msgget=''
+d_msghdr_s=''
d_msgrcv=''
d_msgsnd=''
d_msync=''
@@ -473,6 +476,8 @@ d_rewinddir=''
d_seekdir=''
d_telldir=''
d_readlink=''
+d_readv=''
+d_recvmsg=''
d_rename=''
d_rmdir=''
d_safebcpy=''
@@ -484,11 +489,13 @@ d_sem=''
d_semctl=''
d_semget=''
d_semop=''
+d_sendmsg=''
d_setegid=''
d_seteuid=''
d_setgrent=''
d_setgrps=''
d_sethent=''
+d_setitimer=''
d_setlinebuf=''
d_setlocale=''
d_setnent=''
@@ -582,10 +589,13 @@ clocktype=''
d_times=''
d_truncate=''
d_tzname=''
+d_u32align=''
+d_ualarm=''
d_umask=''
d_semctl_semid_ds=''
d_semctl_semun=''
d_union_semun=''
+d_usleep=''
d_ustat=''
d_vfork=''
usevfork=''
@@ -598,6 +608,7 @@ d_wait4=''
d_waitpid=''
d_wcstombs=''
d_wctomb=''
+d_writev=''
dlext=''
cccdlflags=''
ccdlflags=''
@@ -8712,6 +8723,144 @@ eval $inlibc
set chsize d_chsize
eval $inlibc
+hasstruct='varname=$1; struct=$2; 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; }" >> try.c;
+set try;
+if eval $compile; then
+ val="$define";
+else
+ val="$undef";
+fi;
+set $varname;
+eval $setvar;
+$rm -f try.c try.o'
+
+: see if sys/types.h has to be included
+set sys/types.h i_systypes
+eval $inhdr
+
+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; char* bar; bar = (char*)foo.$field; }" >> try.c;
+set try;
+if eval $compile; then
+ val="$define";
+else
+ val="$undef";
+fi;
+set $varname;
+eval $setvar;
+$rm -f try.c try.o'
+
+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 " "
+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/types.h>
+#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
+
+: see if this is a sys/uio.h system
+set sys/uio.h i_sysuio
+eval $inhdr
+
+
+echo " "
+echo "Checking to see if your system supports struct cmsghdr..." >&4
+set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
+eval $hasstruct
+case "$d_cmsghdr_s" in
+"$define") echo "Yes, it does." ;;
+*) echo "No, it doesn't." ;;
+esac
+
+
: check for const keyword
echo " "
echo 'Checking to see if your C compiler knows about "const"...' >&4
@@ -9388,107 +9537,6 @@ eval $setvar
$rm -f try*
-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; char* bar; bar = (char*)foo.$field; }" >> try.c;
-set try;
-if eval $compile; then
- val="$define";
-else
- val="$undef";
-fi;
-set $varname;
-eval $setvar;
-$rm -f try.c try.o'
-
-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 " "
-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/types.h>
-#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
-
: see if sys/select.h has to be included
set sys/select.h i_sysselct
eval $inhdr
@@ -9698,24 +9746,6 @@ eval $setvar
set frexpl d_frexpl
eval $inlibc
-hasstruct='varname=$1; struct=$2; 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; }" >> try.c;
-set try;
-if eval $compile; then
- val="$define";
-else
- val="$undef";
-fi;
-set $varname;
-eval $setvar;
-$rm -f try.c try.o'
-
: see if this is a sys/param system
set sys/param.h i_sysparam
eval $inhdr
@@ -9724,10 +9754,6 @@ eval $inhdr
set sys/mount.h i_sysmount
eval $inhdr
-: see if sys/types.h has to be included
-set sys/types.h i_systypes
-eval $inhdr
-
echo " "
echo "Checking to see if your system supports struct fs_data..." >&4
@@ -9898,6 +9924,10 @@ echo " "
set d_gethostprotos gethostent $i_netdb netdb.h
eval $hasproto
+: see if getitimer exists
+set getitimer d_getitimer
+eval $inlibc
+
: see if getlogin exists
set getlogin d_getlogin
eval $inlibc
@@ -10394,6 +10424,17 @@ fi
set d_msg
eval $setvar
+
+echo " "
+echo "Checking to see if your system supports struct msghdr..." >&4
+set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
+eval $hasstruct
+case "$d_msghdr_s" in
+"$define") echo "Yes, it does." ;;
+*) echo "No, it doesn't." ;;
+esac
+
+
: see if msync exists
set msync d_msync
eval $inlibc
@@ -10980,6 +11021,14 @@ eval $inlibc
set readlink d_readlink
eval $inlibc
+: see if readv exists
+set readv d_readv
+eval $inlibc
+
+: see if recvmsg exists
+set recvmsg d_recvmsg
+eval $inlibc
+
: see if rename exists
set rename d_rename
eval $inlibc
@@ -11462,6 +11511,10 @@ END
;;
esac
+: see if sendmsg exists
+set sendmsg d_sendmsg
+eval $inlibc
+
: see if setegid exists
set setegid d_setegid
eval $inlibc
@@ -11478,6 +11531,10 @@ eval $inlibc
set sethostent d_sethent
eval $inlibc
+: see if setitimer exists
+set setitimer d_setitimer
+eval $inlibc
+
: see if setlinebuf exists
set setlinebuf d_setlinebuf
eval $inlibc
@@ -12501,10 +12558,185 @@ fi
set d_tzname
eval $setvar
+case "$crosscompile" in
+''|[nN]*) crosscompile="$undef" ;;
+esac
+
+case "$osname" in
+next|rhapsody|darwin) multiarch="$define" ;;
+esac
+case "$multiarch" in
+''|[nN]*) multiarch="$undef" ;;
+esac
+
+: check for ordering of bytes in a long
+echo " "
+case "$crosscompile$multiarch" in
+*$define*)
+ $cat <<EOM
+You seem to be either cross-compiling or doing a multiarchitecture build,
+skipping the byteorder check.
+
+EOM
+ byteorder='0xffff'
+ ;;
+*)
+ case "$byteorder" in
+ '')
+ $cat <<'EOM'
+In the following, larger digits indicate more significance. A big-endian
+machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
+little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
+machines may have weird orders like 3412. A Cray will report 87654321,
+an Alpha will report 12345678. If the test program works the default is
+probably right.
+I'm now running the test program...
+EOM
+ $cat >try.c <<'EOCP'
+#include <stdio.h>
+int main()
+{
+ int i;
+ union {
+ unsigned long l;
+ char c[sizeof(long)];
+ } u;
+
+ if (sizeof(long) > 4)
+ u.l = (0x08070605L << 32) | 0x04030201L;
+ else
+ u.l = 0x04030201L;
+ for (i = 0; i < sizeof(long); i++)
+ printf("%c", u.c[i]+'0');
+ printf("\n");
+ exit(0);
+}
+EOCP
+ xxx_prompt=y
+ set try
+ if eval $compile && ./try > /dev/null; then
+ dflt=`./try`
+ case "$dflt" in
+ [1-4][1-4][1-4][1-4]|12345678|87654321)
+ echo "(The test program ran ok.)"
+ echo "byteorder=$dflt"
+ xxx_prompt=n
+ ;;
+ ????|????????) echo "(The test program ran ok.)" ;;
+ *) echo "(The test program didn't run right for some reason.)" ;;
+ esac
+ else
+ dflt='4321'
+ cat <<'EOM'
+(I can't seem to compile the test program. Guessing big-endian...)
+EOM
+ fi
+ case "$xxx_prompt" in
+ y)
+ rp="What is the order of bytes in a long?"
+ . ./myread
+ byteorder="$ans"
+ ;;
+ *) byteorder=$dflt
+ ;;
+ esac
+ ;;
+ esac
+ $rm -f try.c try
+ ;;
+esac
+
+
+$cat <<EOM
+
+Checking to see whether you can access character data unalignedly...
+EOM
+$cat >try.c <<EOCP
+#include <stdio.h>
+#define U32 $u32type
+#define BYTEORDER $byteorder
+int main() {
+#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
+ U8 buf[] = "\0\0\0\1\0\0\0\0";
+ U32 *up;
+ int i;
+
+ if (sizeof(U32) != 4) {
+ printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
+ exit(1);
+ }
+
+ fflush(stdout);
+
+ for (i = 0; i < 4; i++) {
+ up = (U32*)(buf + i);
+ if (! ((*up == 1 << (8*i)) || /* big-endian */
+ (*up == 1 << (8*(3-i))) /* little-endian */
+ )
+ )
+ {
+ printf("read failed (%x)\n", *up);
+ exit(2);
+ }
+ }
+
+ /* write test */
+ for (i = 0; i < 4; i++) {
+ up = (U32*)(buf + i);
+ *up = 0xBeef;
+ if (*up != 0xBeef) {
+ printf("write failed (%x)\n", *up);
+ exit(3);
+ }
+ }
+
+ exit(0);
+#else
+ printf("1\n");
+ exit(1);
+#endif
+ return 0;
+}
+EOCP
+set try
+if eval $compile_ok; then
+ echo "(This test may dump core.)" >&4
+ ./try >&2 >/dev/null
+ case "$?" in
+ 0) cat >&4 <<EOM
+You can access character data pretty unalignedly.
+EOM
+ d_u32align="$undef"
+ ;;
+ *) cat >&4 <<EOM
+It seems that you must access character data in an aligned manner.
+EOM
+ d_u32align="$define"
+ ;;
+ esac
+ $rm -f core core.try.* try.core
+else
+ rp='Can you access character data at unaligned addresses?'
+ dflt='n'
+ . ./myread
+ case "$ans" in
+ [yY]*) d_u32align="$undef" ;;
+ *) d_u32align="$define" ;;
+ esac
+fi
+
+: see if ualarm exists
+set ualarm d_ualarm
+eval $inlibc
+
: see if umask exists
set umask d_umask
eval $inlibc
+: see if usleep exists
+set usleep d_usleep
+eval $inlibc
+
: see if ustat exists
set ustat d_ustat
eval $inlibc
@@ -12637,6 +12869,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'
@@ -12644,17 +12880,6 @@ Log='$Log'
RCSfile='$RCSfile'
Revision='$Revision'
-case "$crosscompile" in
-''|[nN]*) crosscompile="$undef" ;;
-esac
-
-case "$osname" in
-next|rhapsody|darwin) multiarch="$define" ;;
-esac
-case "$multiarch" in
-''|[nN]*) multiarch="$undef" ;;
-esac
-
: check for alignment requirements
echo " "
case "$crosscompile$multiarch" in
@@ -12714,84 +12939,6 @@ esac
: set the base revision
baserev=5.0
-: check for ordering of bytes in a long
-echo " "
-case "$crosscompile$multiarch" in
-*$define*)
- $cat <<EOM
-You seem to be either cross-compiling or doing a multiarchitecture build,
-skipping the byteorder check.
-
-EOM
- byteorder='0xffff'
- ;;
-*)
- case "$byteorder" in
- '')
- $cat <<'EOM'
-In the following, larger digits indicate more significance. A big-endian
-machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
-little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
-machines may have weird orders like 3412. A Cray will report 87654321,
-an Alpha will report 12345678. If the test program works the default is
-probably right.
-I'm now running the test program...
-EOM
- $cat >try.c <<'EOCP'
-#include <stdio.h>
-int main()
-{
- int i;
- union {
- unsigned long l;
- char c[sizeof(long)];
- } u;
-
- if (sizeof(long) > 4)
- u.l = (0x08070605L << 32) | 0x04030201L;
- else
- u.l = 0x04030201L;
- for (i = 0; i < sizeof(long); i++)
- printf("%c", u.c[i]+'0');
- printf("\n");
- exit(0);
-}
-EOCP
- xxx_prompt=y
- set try
- if eval $compile && ./try > /dev/null; then
- dflt=`./try`
- case "$dflt" in
- [1-4][1-4][1-4][1-4]|12345678|87654321)
- echo "(The test program ran ok.)"
- echo "byteorder=$dflt"
- xxx_prompt=n
- ;;
- ????|????????) echo "(The test program ran ok.)" ;;
- *) echo "(The test program didn't run right for some reason.)" ;;
- esac
- else
- dflt='4321'
- cat <<'EOM'
-(I can't seem to compile the test program. Guessing big-endian...)
-EOM
- fi
- case "$xxx_prompt" in
- y)
- rp="What is the order of bytes in a long?"
- . ./myread
- byteorder="$ans"
- ;;
- *) byteorder=$dflt
- ;;
- esac
- ;;
- esac
- $rm -f try.c try
- ;;
-esac
-
-
: how do we catenate cpp tokens here?
echo " "
echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
@@ -15514,10 +15661,6 @@ eval $inhdr
set sys/statvfs.h i_sysstatvfs
eval $inhdr
-: see if this is a sys/uio.h system
-set sys/uio.h i_sysuio
-eval $inhdr
-
: see if this is a sys/un.h system
set sys/un.h i_sysun
eval $inhdr
@@ -16025,6 +16168,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'
@@ -16079,6 +16223,7 @@ d_gethbyname='$d_gethbyname'
d_gethent='$d_gethent'
d_gethname='$d_gethname'
d_gethostprotos='$d_gethostprotos'
+d_getitimer='$d_getitimer'
d_getlogin='$d_getlogin'
d_getmnt='$d_getmnt'
d_getmntent='$d_getmntent'
@@ -16151,6 +16296,7 @@ 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_msync='$d_msync'
@@ -16184,6 +16330,8 @@ d_qgcvt='$d_qgcvt'
d_quad='$d_quad'
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'
@@ -16201,11 +16349,13 @@ 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'
d_setgrps='$d_setgrps'
d_sethent='$d_sethent'
+d_setitimer='$d_setitimer'
d_setlinebuf='$d_setlinebuf'
d_setlocale='$d_setlocale'
d_setnent='$d_setnent'
@@ -16281,9 +16431,12 @@ d_time='$d_time'
d_times='$d_times'
d_truncate='$d_truncate'
d_tzname='$d_tzname'
+d_u32align='$d_u32align'
+d_ualarm='$d_ualarm'
d_umask='$d_umask'
d_uname='$d_uname'
d_union_semun='$d_union_semun'
+d_usleep='$d_usleep'
d_ustat='$d_ustat'
d_vendorarch='$d_vendorarch'
d_vendorbin='$d_vendorbin'
@@ -16298,6 +16451,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'
diff --git a/MANIFEST b/MANIFEST
index 2d051865c0..11c4c57d33 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1516,6 +1516,7 @@ t/lib/lc-currency.t See if Locale::Codes work
t/lib/lc-language.t See if Locale::Codes work
t/lib/lc-uk.t See if Locale::Codes work
t/lib/md5-aaa.t See if Digest::MD5 extension works
+t/lib/md5-align.t See if Digest::MD5 extension works
t/lib/md5-badf.t See if Digest::MD5 extension works
t/lib/md5-file.t See if Digest::MD5 extension works
t/lib/mimeb64.t see whether MIME::Base64 works
diff --git a/Porting/Glossary b/Porting/Glossary
index 61a52c5489..d621d2fea1 100644
--- a/Porting/Glossary
+++ b/Porting/Glossary
@@ -437,6 +437,10 @@ d_closedir (d_closedir.U):
This variable conditionally defines HAS_CLOSEDIR if closedir() is
available.
+d_cmsghdr_s (d_cmsghdr_s.U):
+ This variable conditionally defines the HAS_STRUCT_CMSGHDR symbol,
+ which indicates that 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
@@ -689,6 +693,10 @@ d_gethostprotos (d_gethostprotos.U):
prototypes for the various gethost*() functions.
See also netdbtype.U for probing for various netdb types.
+d_getitimer (d_getitimer.U):
+ This variable conditionally defines the HAS_GETITIMER symbol, which
+ indicates to the C program that the getitimer() routine is available.
+
d_getlogin (d_getlogin.U):
This variable conditionally defines the HAS_GETLOGIN symbol, which
indicates to the C program that the getlogin() routine is available
@@ -1024,6 +1032,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_msghdr_s.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.
@@ -1226,6 +1238,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_recvmsg.U):
+ This variable conditionally defines the HAS_RECVMSG symbol, which
+ indicates to the C program that the recvmsg() routine is available.
+
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
@@ -1305,6 +1325,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_sendmsg.U):
+ This variable conditionally defines the HAS_SENDMSG symbol, which
+ indicates to the C program that the sendmsg() routine is available.
+
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
@@ -1329,6 +1353,10 @@ d_sethent (d_sethent.U):
This variable conditionally defines HAS_SETHOSTENT if sethostent() is
available.
+d_setitimer (d_setitimer.U):
+ This variable conditionally defines the HAS_SETITIMER symbol, which
+ indicates to the C program that the setitimer() routine is available.
+
d_setlinebuf (d_setlnbuf.U):
This variable conditionally defines the HAS_SETLINEBUF symbol, which
indicates to the C program that the setlinebuf() routine is available
@@ -1663,6 +1691,14 @@ d_tzname (d_tzname.U):
This variable conditionally defines HAS_TZNAME if tzname[] is
available to access timezone names.
+d_u32align (d_u32align.U):
+ This variable tells whether you must access character data
+ through U32-aligned pointers.
+
+d_ualarm (d_ualarm.U):
+ This variable conditionally defines the HAS_UALARM symbol, which
+ indicates to the C program that the ualarm() routine is available.
+
d_umask (d_umask.U):
This variable conditionally defines the HAS_UMASK symbol, which
indicates to the C program that the umask() routine is available.
@@ -1677,6 +1713,10 @@ d_union_semun (d_union_semun.U):
This variable conditionally defines HAS_UNION_SEMUN if the
union semun is defined by including <sys/sem.h>.
+d_usleep (d_usleep.U):
+ This variable conditionally defines HAS_USLEEP if usleep() is
+ available to do high granularity sleeps.
+
d_ustat (d_ustat.U):
This variable conditionally defines HAS_USTAT if ustat() is
available to query file system statistics by dev_t.
@@ -1737,6 +1777,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.
diff --git a/Porting/config.sh b/Porting/config.sh
index 3853ffbaf7..1e09d64ee5 100644
--- a/Porting/config.sh
+++ b/Porting/config.sh
@@ -8,7 +8,7 @@
# Package name : perl5
# Source directory : .
-# Configuration time: Tue Mar 27 07:55:38 EET DST 2001
+# Configuration time: Thu Apr 5 20:36:09 EET DST 2001
# 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='Tue Mar 27 07:55:38 EET DST 2001'
+cf_time='Thu Apr 5 20:36:09 EET DST 2001'
charsize='1'
chgrp=''
chmod=''
@@ -121,6 +121,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'
@@ -175,6 +176,7 @@ d_gethbyname='define'
d_gethent='define'
d_gethname='define'
d_gethostprotos='define'
+d_getitimer='define'
d_getlogin='define'
d_getmnt='undef'
d_getmntent='undef'
@@ -247,6 +249,7 @@ 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_msync='define'
@@ -280,6 +283,8 @@ d_qgcvt='undef'
d_quad='define'
d_readdir='define'
d_readlink='define'
+d_readv='define'
+d_recvmsg='define'
d_rename='define'
d_rewinddir='define'
d_rmdir='define'
@@ -297,11 +302,13 @@ 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'
d_setgrps='define'
d_sethent='define'
+d_setitimer='define'
d_setlinebuf='define'
d_setlocale='define'
d_setnent='define'
@@ -377,9 +384,12 @@ d_time='define'
d_times='define'
d_truncate='define'
d_tzname='define'
+d_u32align='define'
+d_ualarm='define'
d_umask='define'
d_uname='define'
d_union_semun='undef'
+d_usleep='define'
d_ustat='define'
d_vendorarch='undef'
d_vendorbin='undef'
@@ -394,6 +404,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'
@@ -404,7 +415,7 @@ dlext='so'
dlsrc='dl_dlopen.xs'
doublesize='8'
drand01='drand48()'
-dynamic_ext='B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call IO IPC/SysV MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread attrs re'
+dynamic_ext='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call IO IPC/SysV MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread XS/Typemap attrs re'
eagain='EAGAIN'
ebcdic='undef'
echo='echo'
@@ -413,7 +424,7 @@ emacs=''
eunicefix=':'
exe_ext=''
expr='expr'
-extensions='B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call IO IPC/SysV MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread attrs re Errno'
+extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call IO IPC/SysV MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread XS/Typemap attrs re Errno'
fflushNULL='define'
fflushall='undef'
find=''
@@ -553,7 +564,7 @@ issymlink='test -h'
ivdformat='"ld"'
ivsize='8'
ivtype='long'
-known_extensions='B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File IO IPC/SysV MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread attrs re'
+known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File IO IPC/SysV MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread XS/Typemap attrs re'
ksh=''
ld='ld'
lddlflags='-shared -expect_unresolved "*" -msym -std -s'
diff --git a/Porting/config_H b/Porting/config_H
index fb8bf3b96d..5c1db5099d 100644
--- a/Porting/config_H
+++ b/Porting/config_H
@@ -17,7 +17,7 @@
/*
* Package name : perl5
* Source directory : .
- * Configuration time: Tue Mar 27 07:55:38 EET DST 2001
+ * Configuration time: Thu Apr 5 20:36:09 EET DST 2001
* Configured by : jhi
* Target system : osf1 alpha.hut.fi v4.0 878 alpha
*/
@@ -645,6 +645,12 @@
*/
#define HAS_UMASK /**/
+/* HAS_USLEEP:
+ * This symbol, if defined, indicates that the usleep routine is
+ * available to let the process sleep on a sub-second accuracy.
+ */
+#define HAS_USLEEP /**/
+
/* HASVOLATILE:
* This symbol, if defined, indicates that this C compiler knows about
* the volatile declaration.
@@ -1241,6 +1247,12 @@
*/
/*#define VOID_CLOSEDIR / **/
+/* HAS_STRUCT_CMSGHDR:
+ * This symbol, if defined, indicates that the struct cmsghdr
+ * is supported.
+ */
+#define HAS_STRUCT_CMSGHDR /**/
+
/* HAS_CSH:
* This symbol, if defined, indicates that the C-shell exists.
*/
@@ -1462,6 +1474,12 @@
*/
#define HAS_GETHOST_PROTOS /**/
+/* HAS_GETITIMER:
+ * This symbol, if defined, indicates that the getitimer routine is
+ * available to return interval timers.
+ */
+#define HAS_GETITIMER /**/
+
/* HAS_GETMNT:
* This symbol, if defined, indicates that the getmnt routine is
* available to get filesystem mount info by filename.
@@ -1770,6 +1788,12 @@
*/
#define HAS_MSG /**/
+/* HAS_STRUCT_MSGHDR:
+ * This symbol, if defined, indicates that the struct msghdr
+ * is supported.
+ */
+#define HAS_STRUCT_MSGHDR /**/
+
/* HAS_OFF64_T:
* This symbol will be defined if the C compiler supports off64_t.
*/
@@ -1810,6 +1834,19 @@
#define SCHED_YIELD sched_yield() /**/
#define HAS_SCHED_YIELD /**/
+/* 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 /**/
+
+/* HAS_RECVMSG:
+ * This symbol, if defined, indicates that the recvmsg routine is
+ * available to send structured socket messages.
+ */
+#define HAS_RECVMSG /**/
+
/* HAS_SAFE_BCOPY:
* This symbol, if defined, indicates that the bcopy routine is available
* to copy potentially overlapping memory blocks. Otherwise you should
@@ -1848,6 +1885,12 @@
*/
#define HAS_SEM /**/
+/* HAS_SENDMSG:
+ * This symbol, if defined, indicates that the sendmsg routine is
+ * available to send structured socket messages.
+ */
+#define HAS_SENDMSG /**/
+
/* HAS_SETGRENT:
* This symbol, if defined, indicates that the setgrent routine is
* available for initializing sequential access of the group database.
@@ -1867,6 +1910,12 @@
*/
#define HAS_SETHOSTENT /**/
+/* HAS_SETITIMER:
+ * This symbol, if defined, indicates that the setitimer routine is
+ * available to set interval timers.
+ */
+#define HAS_SETITIMER /**/
+
/* HAS_SETNETENT:
* This symbol, if defined, indicates that the setnetent() routine is
* available.
@@ -2202,6 +2251,12 @@
*/
#define HAS_TIMES /**/
+/* HAS_UALARM:
+ * This symbol, if defined, indicates that the ualarm routine is
+ * available to do alarms with microsecond granularity.
+ */
+#define HAS_UALARM /**/
+
/* HAS_UNION_SEMUN:
* This symbol, if defined, indicates that the union semun is
* defined by including <sys/sem.h>. If not, the user code
@@ -2257,6 +2312,12 @@
#define HAS_VPRINTF /**/
/*#define USE_CHAR_VSPRINTF / **/
+/* HAS_WRITEV:
+ * This symbol, if defined, indicates that the writev routine is
+ * available to do scatter writes.
+ */
+#define HAS_WRITEV /**/
+
/* USE_DYNAMIC_LOADING:
* This symbol, if defined, indicates that dynamic loading of
* some sort is available.
@@ -3265,4 +3326,10 @@
*/
/*#define HAS_SOCKATMARK / **/
+/* U32_ALIGNMENT_REQUIRED:
+ * This symbol, if defined, indicates that you must access
+ * character data through U32-aligned pointers.
+ */
+#define U32_ALIGNMENT_REQUIRED /**/
+
#endif
diff --git a/config_h.SH b/config_h.SH
index eb95593341..0b828e6fa1 100644
--- a/config_h.SH
+++ b/config_h.SH
@@ -665,6 +665,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
*/
#$d_umask HAS_UMASK /**/
+/* HAS_USLEEP:
+ * This symbol, if defined, indicates that the usleep routine is
+ * available to let the process sleep on a sub-second accuracy.
+ */
+#$d_usleep HAS_USLEEP /**/
+
/* HASVOLATILE:
* This symbol, if defined, indicates that this C compiler knows about
* the volatile declaration.
@@ -1261,6 +1267,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
*/
#$d_void_closedir VOID_CLOSEDIR /**/
+/* HAS_STRUCT_CMSGHDR:
+ * This symbol, if defined, indicates that the struct cmsghdr
+ * is supported.
+ */
+#$d_cmsghdr_s HAS_STRUCT_CMSGHDR /**/
+
/* HAS_CSH:
* This symbol, if defined, indicates that the C-shell exists.
*/
@@ -1482,6 +1494,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
*/
#$d_gethostprotos HAS_GETHOST_PROTOS /**/
+/* HAS_GETITIMER:
+ * This symbol, if defined, indicates that the getitimer routine is
+ * available to return interval timers.
+ */
+#$d_getitimer HAS_GETITIMER /**/
+
/* HAS_GETMNT:
* This symbol, if defined, indicates that the getmnt routine is
* available to get filesystem mount info by filename.
@@ -1790,6 +1808,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
*/
#$d_msg HAS_MSG /**/
+/* HAS_STRUCT_MSGHDR:
+ * This symbol, if defined, indicates that the struct msghdr
+ * is supported.
+ */
+#$d_msghdr_s HAS_STRUCT_MSGHDR /**/
+
/* HAS_OFF64_T:
* This symbol will be defined if the C compiler supports off64_t.
*/
@@ -1830,6 +1854,19 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
#define SCHED_YIELD $sched_yield /**/
#$d_sched_yield HAS_SCHED_YIELD /**/
+/* 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 /**/
+
+/* HAS_RECVMSG:
+ * This symbol, if defined, indicates that the recvmsg routine is
+ * available to send structured socket messages.
+ */
+#$d_recvmsg HAS_RECVMSG /**/
+
/* HAS_SAFE_BCOPY:
* This symbol, if defined, indicates that the bcopy routine is available
* to copy potentially overlapping memory blocks. Otherwise you should
@@ -1868,6 +1905,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
*/
#$d_sem HAS_SEM /**/
+/* HAS_SENDMSG:
+ * This symbol, if defined, indicates that the sendmsg routine is
+ * available to send structured socket messages.
+ */
+#$d_sendmsg HAS_SENDMSG /**/
+
/* HAS_SETGRENT:
* This symbol, if defined, indicates that the setgrent routine is
* available for initializing sequential access of the group database.
@@ -1887,6 +1930,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
*/
#$d_sethent HAS_SETHOSTENT /**/
+/* HAS_SETITIMER:
+ * This symbol, if defined, indicates that the setitimer routine is
+ * available to set interval timers.
+ */
+#$d_setitimer HAS_SETITIMER /**/
+
/* HAS_SETNETENT:
* This symbol, if defined, indicates that the setnetent() routine is
* available.
@@ -2222,6 +2271,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
*/
#$d_times HAS_TIMES /**/
+/* HAS_UALARM:
+ * This symbol, if defined, indicates that the ualarm routine is
+ * available to do alarms with microsecond granularity.
+ */
+#$d_ualarm HAS_UALARM /**/
+
/* HAS_UNION_SEMUN:
* This symbol, if defined, indicates that the union semun is
* defined by including <sys/sem.h>. If not, the user code
@@ -2277,6 +2332,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
#$d_vprintf HAS_VPRINTF /**/
#$d_charvspr USE_CHAR_VSPRINTF /**/
+/* HAS_WRITEV:
+ * This symbol, if defined, indicates that the writev routine is
+ * available to do scatter writes.
+ */
+#$d_writev HAS_WRITEV /**/
+
/* USE_DYNAMIC_LOADING:
* This symbol, if defined, indicates that dynamic loading of
* some sort is available.
@@ -3285,5 +3346,11 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
*/
#$d_sockatmark HAS_SOCKATMARK /**/
+/* U32_ALIGNMENT_REQUIRED:
+ * This symbol, if defined, indicates that you must access
+ * character data through U32-aligned pointers.
+ */
+#$d_u32align U32_ALIGNMENT_REQUIRED /**/
+
#endif
!GROK!THIS!
diff --git a/configure.com b/configure.com
index 6bb304095f..8b13c1f14f 100644
--- a/configure.com
+++ b/configure.com
@@ -4982,6 +4982,7 @@ $ WC "d_gethbyname='" + d_gethbyname + "'"
$ WC "d_gethent='" + d_gethent + "'"
$ WC "d_gethname='" + d_gethname + "'"
$ WC "d_gethostprotos='" + d_gethostprotos + "'"
+$ WC "d_getitimer='undef'"
$ WC "d_getlogin='define'"
$ WC "d_getmnt='undef'"
$ WC "d_getmntent='undef'"
@@ -5109,6 +5110,7 @@ $ WC "d_seteuid='undef'"
$ WC "d_setgrent='undef'"
$ WC "d_setgrps='undef'"
$ WC "d_sethent='" + d_sethent + "'"
+$ WC "d_setitimer='undef'"
$ WC "d_setlinebuf='undef'"
$ WC "d_setlocale='" + d_setlocale + "'"
$ WC "d_setnent='" + d_setnent + "'"
@@ -5178,10 +5180,13 @@ $ WC "d_telldirproto='define'"
$ WC "d_times='define'"
$ WC "d_truncate='" + d_truncate + "'"
$ WC "d_tzname='undef'"
+$ WC "d_u32align='define'"
+$ WC "d_ualarm='undef'"
$ WC "d_umask='define'"
$ WC "d_uname='" + d_uname + "'"
$ WC "d_union_semun='undef'"
$ WC "d_unlink_all_versions='undef'"
+$ WC "d_usleep='undef'"
$ WC "d_ustat='undef'"
$ WC "d_vendorarch='undef'"
$ WC "d_vendorlib='undef'"
diff --git a/epoc/config.sh b/epoc/config.sh
index 2c4c03ed56..760676932d 100644
--- a/epoc/config.sh
+++ b/epoc/config.sh
@@ -115,6 +115,7 @@ d_chsize='undef'
d_closedir='undef'
d_cmsghdr_s='undef'
d_const='define'
+d_cmsghdr_s='undef'
d_crypt='undef'
d_csh='undef'
d_cuserid='undef'
@@ -166,6 +167,7 @@ d_gethbyname='define'
d_gethent='undef'
d_gethname='undef'
d_gethostprotos='define'
+d_getitimer='undef'
d_getlogin='undef'
d_getmntent='undef'
d_getnbyaddr='undef'
@@ -235,6 +237,7 @@ d_msg_oob='undef'
d_msg_peek='undef'
d_msg_proxy='undef'
d_msgctl='undef'
+d_msghdr_s='undef'
d_msgget='undef'
d_msghdr_s='undef'
d_msgrcv='undef'
@@ -269,6 +272,8 @@ d_readdir='define'
d_readlink='undef'
d_readv='undef'
d_recvmsg='undef'
+d_readv='undef'
+d_recvmsg='undef'
d_rename='define'
d_rewinddir='define'
d_rmdir='define'
@@ -292,6 +297,7 @@ d_seteuid='undef'
d_setgrent='undef'
d_setgrps='undef'
d_sethent='undef'
+d_setitimer='undef'
d_setlinebuf='undef'
d_setlocale='undef'
d_setnent='undef'
@@ -363,6 +369,8 @@ d_time='undef'
d_times='undef'
d_truncate='undef'
d_tzname='undef'
+d_u32align='define'
+d_ualarm='undef'
d_umask='undef'
d_uname='undef'
d_union_semun='undef'
@@ -794,6 +802,7 @@ d_sqrtl='undef'
d_getmnt='undef'
d_statfs_f_flags='undef'
d_statfs_s='undef'
+d_usleep='undef'
d_ustat='undef'
i_sysstatfs='undef'
i_sysvfs='undef'
diff --git a/ext/Digest/MD5/Makefile.PL b/ext/Digest/MD5/Makefile.PL
index 9d59dba621..31dcabf891 100644
--- a/ext/Digest/MD5/Makefile.PL
+++ b/ext/Digest/MD5/Makefile.PL
@@ -5,10 +5,9 @@ use ExtUtils::MakeMaker;
my @extra;
@extra = (DEFINE => "-DU32_ALIGNMENT_REQUIRED")
- if $Config{'byteorder'} ne '1234' ||
- $Config{'byteorder'} ne '4321' ||
+ if !($Config{'byteorder'} eq '1234' || $Config{'byteorder'} eq '4321') ||
$^O eq 'VMS' ||
- $Config{u32_alignment_required};
+ $Config{d_u32align};
WriteMakefile(
'NAME' => 'Digest::MD5',
diff --git a/perl.h b/perl.h
index 7e5d994bd4..ab7a8e8f48 100644
--- a/perl.h
+++ b/perl.h
@@ -718,6 +718,11 @@ typedef struct perl_mstats perl_mstats_t;
# define WIN32SCK_IS_STDSCK /* don't pull in custom wsock layer */
#endif
+/* In Tru64 use the 4.4BSD struct msghdr, not the 4.3 one */
+#if defined(__osf__) && defined(__alpha) && !defined(_SOCKADDR_LEN)
+# define _SOCKADDR_LEN
+#endif
+
#if defined(HAS_SOCKET) && !defined(VMS) /* VMS handles sockets via vmsish.h */
# include <sys/socket.h>
# if defined(USE_SOCKS) && defined(I_SOCKS)
@@ -3626,6 +3631,20 @@ typedef struct am_table_short AMTS;
NVff
NVgf
+ HAS_USLEEP
+ HAS_UALARM
+
+ HAS_SETITIMER
+ HAS_GETITIMER
+
+ HAS_SENDMSG
+ HAS_RECVMSG
+ HAS_READV
+ HAS_WRITEV
+ I_SYSUIO
+ HAS_STRUCT_MSGHDR
+ HAS_STRUCT_CMSGHDR
+
so that Configure picks them up. */
#endif /* Include guard */
diff --git a/t/lib/md5-align.t b/t/lib/md5-align.t
new file mode 100644
index 0000000000..4176062415
--- /dev/null
+++ b/t/lib/md5-align.t
@@ -0,0 +1,20 @@
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
+
+# Test that md5 works on unaligned memory blocks
+
+print "1..1\n";
+
+use strict;
+use Digest::MD5 qw(md5_hex);
+
+my $str = "\100" x 20;
+substr($str, 0, 1, ""); # chopping off first char makes the string unaligned
+
+#use Devel::Peek; Dump($str);
+
+print "not " unless md5_hex($str) eq "c7ebb510e59ee96f404f288d14cc656a";
+print "ok 1\n";
+
diff --git a/uconfig.h b/uconfig.h
index 60239ac2f8..69141519ee 100644
--- a/uconfig.h
+++ b/uconfig.h
@@ -641,6 +641,12 @@
*/
/*#define HAS_UMASK / **/
+/* HAS_USLEEP:
+ * This symbol, if defined, indicates that the usleep routine is
+ * available to let the process sleep on a sub-second accuracy.
+ */
+/*#define HAS_USLEEP / **/
+
/* HASVOLATILE:
* This symbol, if defined, indicates that this C compiler knows about
* the volatile declaration.
@@ -1237,6 +1243,12 @@
*/
/*#define VOID_CLOSEDIR / **/
+/* HAS_STRUCT_CMSGHDR:
+ * This symbol, if defined, indicates that the struct cmsghdr
+ * is supported.
+ */
+/*#define HAS_STRUCT_CMSGHDR / **/
+
/* HAS_CSH:
* This symbol, if defined, indicates that the C-shell exists.
*/
@@ -1458,6 +1470,12 @@
*/
/*#define HAS_GETHOST_PROTOS / **/
+/* HAS_GETITIMER:
+ * This symbol, if defined, indicates that the getitimer routine is
+ * available to return interval timers.
+ */
+/*#define HAS_GETITIMER / **/
+
/* HAS_GETMNT:
* This symbol, if defined, indicates that the getmnt routine is
* available to get filesystem mount info by filename.
@@ -1766,6 +1784,12 @@
*/
/*#define HAS_MSG / **/
+/* HAS_STRUCT_MSGHDR:
+ * This symbol, if defined, indicates that the struct msghdr
+ * is supported.
+ */
+/*#define HAS_STRUCT_MSGHDR / **/
+
/* HAS_OFF64_T:
* This symbol will be defined if the C compiler supports off64_t.
*/
@@ -1806,6 +1830,19 @@
#define SCHED_YIELD sched_yield() /**/
/*#define HAS_SCHED_YIELD / **/
+/* 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 / **/
+
+/* HAS_RECVMSG:
+ * This symbol, if defined, indicates that the recvmsg routine is
+ * available to send structured socket messages.
+ */
+/*#define HAS_RECVMSG / **/
+
/* HAS_SAFE_BCOPY:
* This symbol, if defined, indicates that the bcopy routine is available
* to copy potentially overlapping memory blocks. Otherwise you should
@@ -1844,6 +1881,12 @@
*/
/*#define HAS_SEM / **/
+/* HAS_SENDMSG:
+ * This symbol, if defined, indicates that the sendmsg routine is
+ * available to send structured socket messages.
+ */
+/*#define HAS_SENDMSG / **/
+
/* HAS_SETGRENT:
* This symbol, if defined, indicates that the setgrent routine is
* available for initializing sequential access of the group database.
@@ -1863,6 +1906,12 @@
*/
/*#define HAS_SETHOSTENT / **/
+/* HAS_SETITIMER:
+ * This symbol, if defined, indicates that the setitimer routine is
+ * available to set interval timers.
+ */
+/*#define HAS_SETITIMER / **/
+
/* HAS_SETNETENT:
* This symbol, if defined, indicates that the setnetent() routine is
* available.
@@ -2198,6 +2247,12 @@
*/
/*#define HAS_TIMES / **/
+/* HAS_UALARM:
+ * This symbol, if defined, indicates that the ualarm routine is
+ * available to do alarms with microsecond granularity.
+ */
+/*#define HAS_UALARM / **/
+
/* HAS_UNION_SEMUN:
* This symbol, if defined, indicates that the union semun is
* defined by including <sys/sem.h>. If not, the user code
@@ -2253,6 +2308,12 @@
#define HAS_VPRINTF /**/
/*#define USE_CHAR_VSPRINTF / **/
+/* HAS_WRITEV:
+ * This symbol, if defined, indicates that the writev routine is
+ * available to do scatter writes.
+ */
+/*#define HAS_WRITEV / **/
+
/* USE_DYNAMIC_LOADING:
* This symbol, if defined, indicates that dynamic loading of
* some sort is available.
@@ -3261,4 +3322,10 @@
*/
/*#define HAS_SOCKATMARK / **/
+/* U32_ALIGNMENT_REQUIRED:
+ * This symbol, if defined, indicates that you must access
+ * character data through U32-aligned pointers.
+ */
+#define U32_ALIGNMENT_REQUIRED /**/
+
#endif
diff --git a/uconfig.sh b/uconfig.sh
index f2afe30694..9ded43bed0 100755
--- a/uconfig.sh
+++ b/uconfig.sh
@@ -52,6 +52,7 @@ d_chroot='undef'
d_chsize='undef'
d_closedir='undef'
d_const='undef'
+d_cmsghdr_s='undef'
d_crypt='undef'
d_csh='undef'
d_cuserid='undef'
@@ -105,6 +106,7 @@ d_gethbyname='undef'
d_gethent='undef'
d_gethname='undef'
d_gethostprotos='undef'
+d_getitimer='undef'
d_getlogin='undef'
d_getmnt='undef'
d_getmntent='undef'
@@ -178,6 +180,7 @@ d_msg_peek='undef'
d_msg_proxy='undef'
d_msgctl='undef'
d_msgget='undef'
+d_msghdr_s='undef'
d_msgrcv='undef'
d_msgsnd='undef'
d_msync='undef'
@@ -211,6 +214,8 @@ d_qgcvt='undef'
d_quad='undef'
d_readdir='undef'
d_readlink='undef'
+d_readv='undef'
+d_recvmsg='undef'
d_rename='undef'
d_rewinddir='undef'
d_rmdir='undef'
@@ -228,11 +233,13 @@ d_semctl_semid_ds='undef'
d_semctl_semun='undef'
d_semget='undef'
d_semop='undef'
+d_sendmsg='undef'
d_setegid='undef'
d_seteuid='undef'
d_setgrent='undef'
d_setgrps='undef'
d_sethent='undef'
+d_setitimer='undef'
d_setlinebuf='undef'
d_setlocale='undef'
d_setnent='undef'
@@ -308,9 +315,12 @@ d_time='undef'
d_times='undef'
d_truncate='undef'
d_tzname='undef'
+d_u32align='define'
+d_ualarm='undef'
d_umask='undef'
d_uname='undef'
d_union_semun='undef'
+d_usleep='undef'
d_ustat='undef'
d_vendorarch='undef'
d_vendorbin='undef'
@@ -325,6 +335,7 @@ d_wait4='undef'
d_waitpid='undef'
d_wcstombs='undef'
d_wctomb='undef'
+d_writev='undef'
d_xenix='undef'
db_hashtype='u_int32_t'
db_prefixtype='size_t'
diff --git a/vos/config.alpha.def b/vos/config.alpha.def
index 3128752a27..1242114a1f 100644
--- a/vos/config.alpha.def
+++ b/vos/config.alpha.def
@@ -36,6 +36,7 @@ $d_charvspr='undef'
$d_chown='undef'
$d_chroot='undef'
$d_chsize='undef'
+$d_cmsghdr_s='undef'
$d_const='define'
$d_crypt='undef'
$d_csh='undef'
@@ -86,6 +87,7 @@ $d_gethbyname='define'
$d_gethent='define'
$d_gethname='define'
$d_gethostprotos='define'
+$d_getitimer='undef'
$d_getlogin='define'
$d_getmnt='undef'
$d_getmntent='undef'
@@ -156,6 +158,7 @@ $d_msg_dontroute='undef'
$d_msg_oob='undef'
$d_msg_peek='undef'
$d_msg_proxy='undef'
+$d_msghdr_s='undef'
$d_msync='undef'
$d_munmap='undef'
$d_mymalloc='undef'
@@ -187,6 +190,8 @@ $d_pwquota='undef'
$d_quad='undef'
$d_readdir='define'
$d_readlink='define'
+$d_readv='undef'
+$d_recvmsg='undef'
$d_rename='define'
$d_rewinddir='define'
$d_rmdir='define'
@@ -202,6 +207,7 @@ $d_select='define'
$d_sem='undef'
$d_semctl_semid_ds='undef'
$d_semctl_semun='undef'
+$d_sendmsg='undef'
$d_setegid='undef'
$d_seteuid='undef'
$d_setgrent='undef'
@@ -274,9 +280,12 @@ $d_telldirproto='undef'
$d_times='define'
$d_truncate='undef'
$d_tzname='define'
+$d_u32align='define'
+$d_ualarm='undef'
$d_umask='define'
$d_uname='define'
$d_union_semun='undef'
+$d_usleep='undef'
$d_ustat='undef'
$d_vendorarch='define'
$d_vendorlib='define'
@@ -288,6 +297,7 @@ $d_wait4='undef'
$d_waitpid='define'
$d_wcstombs='define'
$d_wctomb='define'
+$d_writev='undef'
$db_hashtype='int'
$db_prefixtype='int'
$defvoidused='15'
diff --git a/vos/config.alpha.h b/vos/config.alpha.h
index a4d0f3dc84..c4291f9fa2 100644
--- a/vos/config.alpha.h
+++ b/vos/config.alpha.h
@@ -442,6 +442,19 @@
*/
#define HAS_READLINK /**/
+/* 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 /**/
+
+/* HAS_RECVMSG:
+ * This symbol, if defined, indicates that the recvmsg routine is
+ * available to send structured socket messages.
+ */
+/*#define HAS_RECVMSG /**/
+
/* HAS_RENAME:
* This symbol, if defined, indicates that the rename routine is available
* to rename files. Otherwise you should do the unlink(), link(), unlink()
@@ -667,6 +680,12 @@
*/
#define HAS_UMASK /**/
+/* HAS_USLEEP:
+ * This symbol, if defined, indicates that the usleep routine is
+ * available to let the process sleep on a sub-second accuracy.
+ */
+/*#define HAS_USLEEP /**/
+
/* HASVOLATILE:
* This symbol, if defined, indicates that this C compiler knows about
* the volatile declaration.
@@ -1258,6 +1277,12 @@
*/
/*#define VOID_CLOSEDIR /**/
+/* HAS_STRUCT_CMSGHDR:
+ * This symbol, if defined, indicates that the struct cmsghdr
+ * is supported.
+ */
+/*#define HAS_STRUCT_CMSGHDR / **/
+
/* HAS_CSH:
* This symbol, if defined, indicates that the C-shell exists.
*/
@@ -1472,6 +1497,12 @@
*/
#define HAS_GETHOST_PROTOS /**/
+/* HAS_GETITIMER:
+ * This symbol, if defined, indicates that the getitimer routine is
+ * available to return interval timers.
+ */
+/*#define HAS_GETITIMER /**/
+
/* HAS_GETMNT:
* This symbol, if defined, indicates that the getmnt routine is
* available to get filesystem mount info by filename.
@@ -1762,6 +1793,12 @@
*/
/*#define HAS_MSG /**/
+/* HAS_STRUCT_MSGHDR:
+ * This symbol, if defined, indicates that the struct msghdr
+ * is supported.
+ */
+/*#define HAS_STRUCT_MSGHDR / **/
+
/* HAS_OFF64_T:
* This symbol will be defined if the C compiler supports off64_t.
*/
@@ -1840,6 +1877,12 @@
*/
/*#define HAS_SEM /**/
+/* HAS_SENDMSG:
+ * This symbol, if defined, indicates that the sendmsg routine is
+ * available to send structured socket messages.
+ */
+/*#define HAS_SENDMSG /**/
+
/* HAS_SETGRENT:
* This symbol, if defined, indicates that the setgrent routine is
* available for initializing sequential access of the group database.
@@ -1859,6 +1902,12 @@
*/
#define HAS_SETHOSTENT /**/
+/* HAS_SETITIMER:
+ * This symbol, if defined, indicates that the setitimer routine is
+ * available to set interval timers.
+ */
+/*#define HAS_SETITIMER /**/
+
/* HAS_SETNETENT:
* This symbol, if defined, indicates that the setnetent() routine is
* available.
@@ -2189,6 +2238,12 @@
*/
#define HAS_TIMES /**/
+/* HAS_UALARM:
+ * This symbol, if defined, indicates that the ualarm routine is
+ * available to do alarms with microsecond granularity.
+ */
+/*#define HAS_UALARM /**/
+
/* HAS_UNION_SEMUN:
* This symbol, if defined, indicates that the union semun is
* defined by including <sys/sem.h>. If not, the user code
@@ -2244,6 +2299,12 @@
#define HAS_VPRINTF /**/
/*#define USE_CHAR_VSPRINTF /**/
+/* HAS_WRITEV:
+ * This symbol, if defined, indicates that the writev routine is
+ * available to do scatter writes.
+ */
+/*#define HAS_WRITEV /**/
+
/* USE_DYNAMIC_LOADING:
* This symbol, if defined, indicates that dynamic loading of
* some sort is available.
@@ -3262,4 +3323,10 @@
*/
/*#define HAS_SOCKATMARK / **/
+/* U32_ALIGNMENT_REQUIRED:
+ * This symbol, if defined, indicates that you must access
+ * character data through U32-aligned pointers.
+ */
+#define U32_ALIGNMENT_REQUIRED /**/
+
#endif
diff --git a/vos/config.ga.def b/vos/config.ga.def
index 7f0cbdbfcc..63d2aa9882 100644
--- a/vos/config.ga.def
+++ b/vos/config.ga.def
@@ -36,6 +36,7 @@ $d_charvspr='undef'
$d_chown='define'
$d_chroot='undef'
$d_chsize='undef'
+$d_cmsghdr_s='undef'
$d_const='define'
$d_crypt='undef'
$d_csh='define'
@@ -86,6 +87,7 @@ $d_gethbyname='define'
$d_gethent='define'
$d_gethname='define'
$d_gethostprotos='define'
+$d_getitimer='undef'
$d_getlogin='define'
$d_getmnt='undef'
$d_getmntent='undef'
@@ -156,6 +158,7 @@ $d_msg_dontroute='undef'
$d_msg_oob='undef'
$d_msg_peek='undef'
$d_msg_proxy='undef'
+$d_msghdr_s='undef'
$d_msync='undef'
$d_munmap='define'
$d_mymalloc='undef'
@@ -187,6 +190,8 @@ $d_pwquota='undef'
$d_quad='undef'
$d_readdir='define'
$d_readlink='define'
+$d_readv='undef'
+$d_recvmsg='undef'
$d_rename='define'
$d_rewinddir='define'
$d_rmdir='define'
@@ -202,6 +207,7 @@ $d_select='define'
$d_sem='undef'
$d_semctl_semid_ds='undef'
$d_semctl_semun='undef'
+$d_sendmsg='undef'
$d_setegid='define'
$d_seteuid='define'
$d_setgrent='undef'
@@ -274,9 +280,12 @@ $d_telldirproto='undef'
$d_times='define'
$d_truncate='undef'
$d_tzname='define'
+$d_u32align='define'
+$d_ualarm='undef'
$d_umask='define'
$d_uname='define'
$d_union_semun='undef'
+$d_usleep='undef'
$d_ustat='undef'
$d_vendorarch='define'
$d_vendorlib='define'
@@ -288,6 +297,7 @@ $d_wait4='define'
$d_waitpid='define'
$d_wcstombs='define'
$d_wctomb='define'
+$d_writev='undef'
$db_hashtype='int'
$db_prefixtype='int'
$defvoidused='15'
diff --git a/vos/config.ga.h b/vos/config.ga.h
index f54c4de5b5..642b65b26d 100644
--- a/vos/config.ga.h
+++ b/vos/config.ga.h
@@ -442,6 +442,19 @@
*/
#define HAS_READLINK /**/
+/* 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 /**/
+
+/* HAS_RECVMSG:
+ * This symbol, if defined, indicates that the recvmsg routine is
+ * available to send structured socket messages.
+ */
+/*#define HAS_RECVMSG /**/
+
/* HAS_RENAME:
* This symbol, if defined, indicates that the rename routine is available
* to rename files. Otherwise you should do the unlink(), link(), unlink()
@@ -679,6 +692,12 @@
*/
#define HAS_UMASK /**/
+/* HAS_USLEEP:
+ * This symbol, if defined, indicates that the usleep routine is
+ * available to let the process sleep on a sub-second accuracy.
+ */
+/*#define HAS_USLEEP /**/
+
/* HASVOLATILE:
* This symbol, if defined, indicates that this C compiler knows about
* the volatile declaration.
@@ -1270,6 +1289,12 @@
*/
/*#define VOID_CLOSEDIR /**/
+/* HAS_STRUCT_CMSGHDR:
+ * This symbol, if defined, indicates that the struct cmsghdr
+ * is supported.
+ */
+/*#define HAS_STRUCT_CMSGHDR / **/
+
/* HAS_CSH:
* This symbol, if defined, indicates that the C-shell exists.
*/
@@ -1484,6 +1509,12 @@
*/
#define HAS_GETHOST_PROTOS /**/
+/* HAS_GETITIMER:
+ * This symbol, if defined, indicates that the getitimer routine is
+ * available to return interval timers.
+ */
+/*#define HAS_GETITIMER /**/
+
/* HAS_GETMNT:
* This symbol, if defined, indicates that the getmnt routine is
* available to get filesystem mount info by filename.
@@ -1774,6 +1805,12 @@
*/
/*#define HAS_MSG /**/
+/* HAS_STRUCT_MSGHDR:
+ * This symbol, if defined, indicates that the struct msghdr
+ * is supported.
+ */
+/*#define HAS_STRUCT_MSGHDR / **/
+
/* HAS_OFF64_T:
* This symbol will be defined if the C compiler supports off64_t.
*/
@@ -1852,6 +1889,12 @@
*/
/*#define HAS_SEM /**/
+/* HAS_SENDMSG:
+ * This symbol, if defined, indicates that the sendmsg routine is
+ * available to send structured socket messages.
+ */
+/*#define HAS_SENDMSG /**/
+
/* HAS_SETGRENT:
* This symbol, if defined, indicates that the setgrent routine is
* available for initializing sequential access of the group database.
@@ -1871,6 +1914,12 @@
*/
#define HAS_SETHOSTENT /**/
+/* HAS_SETITIMER:
+ * This symbol, if defined, indicates that the setitimer routine is
+ * available to set interval timers.
+ */
+/*#define HAS_SETITIMER /**/
+
/* HAS_SETNETENT:
* This symbol, if defined, indicates that the setnetent() routine is
* available.
@@ -2189,6 +2238,12 @@
*/
#define HAS_TIMES /**/
+/* HAS_UALARM:
+ * This symbol, if defined, indicates that the ualarm routine is
+ * available to do alarms with microsecond granularity.
+ */
+/*#define HAS_UALARM /**/
+
/* HAS_UNION_SEMUN:
* This symbol, if defined, indicates that the union semun is
* defined by including <sys/sem.h>. If not, the user code
@@ -2244,6 +2299,12 @@
#define HAS_VPRINTF /**/
/*#define USE_CHAR_VSPRINTF /**/
+/* HAS_WRITEV:
+ * This symbol, if defined, indicates that the writev routine is
+ * available to do scatter writes.
+ */
+/*#define HAS_WRITEV /**/
+
/* USE_DYNAMIC_LOADING:
* This symbol, if defined, indicates that dynamic loading of
* some sort is available.
@@ -3262,4 +3323,10 @@
*/
/*#define HAS_SOCKATMARK / **/
+/* U32_ALIGNMENT_REQUIRED:
+ * This symbol, if defined, indicates that you must access
+ * character data through U32-aligned pointers.
+ */
+#define U32_ALIGNMENT_REQUIRED /**/
+
#endif
diff --git a/win32/config.bc b/win32/config.bc
index f777579649..b859846f97 100644
--- a/win32/config.bc
+++ b/win32/config.bc
@@ -106,6 +106,7 @@ d_chroot='undef'
d_chsize='define'
d_closedir='define'
d_const='define'
+d_cmsghdr_s='undef'
d_crypt='undef'
d_csh='undef'
d_cuserid='undef'
@@ -159,6 +160,7 @@ d_gethbyname='define'
d_gethent='undef'
d_gethname='define'
d_gethostprotos='define'
+d_getitimer='undef'
d_getlogin='define'
d_getmnt='undef'
d_getmntent='undef'
@@ -231,6 +233,7 @@ d_msg_peek='undef'
d_msg_proxy='undef'
d_msgctl='undef'
d_msgget='undef'
+d_msghdr_s='undef'
d_msgrcv='undef'
d_msgsnd='undef'
d_msync='undef'
@@ -264,6 +267,8 @@ d_qgcvt='undef'
d_quad='undef'
d_readdir='define'
d_readlink='undef'
+d_readv='undef'
+d_recvmsg='undef'
d_rename='define'
d_rewinddir='define'
d_rmdir='define'
@@ -281,11 +286,13 @@ d_semctl_semid_ds='undef'
d_semctl_semun='undef'
d_semget='undef'
d_semop='undef'
+d_sendmsg='undef'
d_setegid='undef'
d_seteuid='undef'
d_setgrent='undef'
d_setgrps='undef'
d_sethent='undef'
+d_setitimer='undef'
d_setlinebuf='undef'
d_setlocale='define'
d_setnent='undef'
@@ -360,9 +367,12 @@ d_time='define'
d_times='define'
d_truncate='undef'
d_tzname='define'
+d_u32align='define'
+d_ualarm='undef'
d_umask='define'
d_uname='define'
d_union_semun='define'
+d_usleep='undef'
d_ustat='undef'
d_vendorarch='undef'
d_vendorbin='undef'
@@ -377,6 +387,7 @@ d_wait4='undef'
d_waitpid='define'
d_wcstombs='define'
d_wctomb='define'
+d_writev='undef'
d_xenix='undef'
date='date'
db_hashtype='int'
diff --git a/win32/config.gc b/win32/config.gc
index 64ccb200e4..e3bd4683ac 100644
--- a/win32/config.gc
+++ b/win32/config.gc
@@ -106,6 +106,7 @@ d_chroot='undef'
d_chsize='define'
d_closedir='define'
d_const='define'
+d_cmsghdr_s='undef'
d_crypt='undef'
d_csh='undef'
d_cuserid='undef'
@@ -159,6 +160,7 @@ d_gethbyname='define'
d_gethent='undef'
d_gethname='define'
d_gethostprotos='define'
+d_getitimer='undef'
d_getlogin='define'
d_getmnt='undef'
d_getmntent='undef'
@@ -231,6 +233,7 @@ d_msg_peek='undef'
d_msg_proxy='undef'
d_msgctl='undef'
d_msgget='undef'
+d_msghdr_s='undef'
d_msgrcv='undef'
d_msgsnd='undef'
d_msync='undef'
@@ -264,6 +267,8 @@ d_qgcvt='undef'
d_quad='undef'
d_readdir='define'
d_readlink='undef'
+d_readv='undef'
+d_recvmsg='undef'
d_rename='define'
d_rewinddir='define'
d_rmdir='define'
@@ -281,11 +286,13 @@ d_semctl_semid_ds='undef'
d_semctl_semun='undef'
d_semget='undef'
d_semop='undef'
+d_sendmsg='undef'
d_setegid='undef'
d_seteuid='undef'
d_setgrent='undef'
d_setgrps='undef'
d_sethent='undef'
+d_setitimer='undef'
d_setlinebuf='undef'
d_setlocale='define'
d_setnent='undef'
@@ -360,9 +367,12 @@ d_time='define'
d_times='define'
d_truncate='undef'
d_tzname='define'
+d_u32align='define'
+d_ualarm='undef'
d_umask='define'
d_uname='define'
d_union_semun='define'
+d_usleep='undef'
d_ustat='undef'
d_vendorarch='undef'
d_vendorbin='undef'
@@ -377,6 +387,7 @@ d_wait4='undef'
d_waitpid='define'
d_wcstombs='define'
d_wctomb='define'
+d_writev='undef'
d_xenix='undef'
date='date'
db_hashtype='int'
diff --git a/win32/config.vc b/win32/config.vc
index b24351898c..0495fd5b50 100644
--- a/win32/config.vc
+++ b/win32/config.vc
@@ -106,6 +106,7 @@ d_chroot='undef'
d_chsize='define'
d_closedir='define'
d_const='define'
+d_cmsghdr_s='undef'
d_crypt='undef'
d_csh='undef'
d_cuserid='undef'
@@ -159,6 +160,7 @@ d_gethbyname='define'
d_gethent='undef'
d_gethname='define'
d_gethostprotos='define'
+d_getitimer='undef'
d_getlogin='define'
d_getmnt='undef'
d_getmntent='undef'
@@ -231,6 +233,7 @@ d_msg_peek='undef'
d_msg_proxy='undef'
d_msgctl='undef'
d_msgget='undef'
+d_msghdr_s='undef'
d_msgrcv='undef'
d_msgsnd='undef'
d_msync='undef'
@@ -264,6 +267,8 @@ d_qgcvt='undef'
d_quad='undef'
d_readdir='define'
d_readlink='undef'
+d_readv='undef'
+d_recvmsg='undef'
d_rename='define'
d_rewinddir='define'
d_rmdir='define'
@@ -281,11 +286,13 @@ d_semctl_semid_ds='undef'
d_semctl_semun='undef'
d_semget='undef'
d_semop='undef'
+d_sendmsg='undef'
d_setegid='undef'
d_seteuid='undef'
d_setgrent='undef'
d_setgrps='undef'
d_sethent='undef'
+d_setitimer='undef'
d_setlinebuf='undef'
d_setlocale='define'
d_setnent='undef'
@@ -360,9 +367,12 @@ d_time='define'
d_times='define'
d_truncate='undef'
d_tzname='define'
+d_u32align='define'
+d_ualarm='undef'
d_umask='define'
d_uname='define'
d_union_semun='define'
+d_usleep='undef'
d_ustat='undef'
d_vendorarch='undef'
d_vendorbin='undef'
@@ -377,6 +387,7 @@ d_wait4='undef'
d_waitpid='define'
d_wcstombs='define'
d_wctomb='define'
+d_writev='undef'
d_xenix='undef'
date='date'
db_hashtype='int'