This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Subject: optimize matching -g still enables -DDEBUGING
[perl5.git] / Configure
index e32e58d..d9911f9 100755 (executable)
--- a/Configure
+++ b/Configure
 # The dist package (which contains metaconfig) is available via SVN:
 #     svn co https://svn.sourceforge.net/svnroot/dist/trunk/dist
 #
+# Though this script was generated by metaconfig from metaunits, it is
+# OK to send patches against Configure itself. It's up to the Configure
+# pumpkin to backport the patch to the metaunits if it is accepted.
+# For more information on patching Configure, see pod/perlhack.pod
+#
+# The metaunits are also available from the public git repository:
+#     http://perl5.git.perl.org/metaconfig.git/ or
+#     $ git clone git://perl5.git.perl.org/metaconfig.git metaconfig
 #
-# Though this script was generated by metaconfig, it is OK to send
-# patches against it. It's up to the Configure pumpkin to backport
-# the patch to the metaunits if it is accepted.
 # See Porting/pumpkin.pod for more information on metaconfig.
 #
 
-# $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
-#
-# Generated on Tue May 20 17:29:22 CEST 2008 [metaconfig 3.5 PL0]
+# Generated on Mon Feb 14 23:00:18 CET 2011 [metaconfig 3.5 PL0]
 # (with additional metaconfig patches by perlbug@perl.org)
 
 cat >c1$$ <<EOF
@@ -53,7 +56,7 @@ true || exec sh $0 $argv:q
 rm -f c1$$ c2$$
 
 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
-       cat >&4 <<EOF
+       cat <<EOF
 ***
 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
@@ -65,7 +68,7 @@ EOF
 fi
 
 if test ! -c /dev/null ; then
-       cat >&4 <<EOF
+       cat <<EOF
 ***
 *** I'm sorry, but /dev/null appears to be a file rather than a device.
 *** Please consult your operating sytem's notes for making a device
@@ -207,7 +210,9 @@ run=''
 targetarch=''
 to=''
 usecrosscompile=''
+extern_C=''
 mistrustnm=''
+usedevel=''
 perllibs=''
 dynamic_ext=''
 extensions=''
@@ -346,6 +351,8 @@ optimize=''
 cf_email=''
 cf_by=''
 cf_time=''
+charbits=''
+charsize=''
 contains=''
 cpp_stuff=''
 cpplast=''
@@ -359,6 +366,7 @@ d_aintl=''
 d_alarm=''
 asctime_r_proto=''
 d_asctime_r=''
+d_attribute_deprecated=''
 d_attribute_format=''
 d_attribute_malloc=''
 d_attribute_nonnull=''
@@ -464,6 +472,7 @@ d_ftime=''
 d_gettimeod=''
 d_futimes=''
 d_Gconvert=''
+d_getaddrinfo=''
 d_getcwd=''
 d_getespwnam=''
 d_getfsstat=''
@@ -495,6 +504,7 @@ d_getlogin_r=''
 getlogin_r_proto=''
 d_getmnt=''
 d_getmntent=''
+d_getnameinfo=''
 d_getnbyaddr=''
 d_getnbyname=''
 d_getnent=''
@@ -551,6 +561,8 @@ d_hasmntopt=''
 d_htonl=''
 d_ilogbl=''
 d_inetaton=''
+d_inetntop=''
+d_inetpton=''
 d_int64_t=''
 d_isascii=''
 d_isfinite=''
@@ -614,6 +626,8 @@ d_pause=''
 d_pipe=''
 d_poll=''
 d_portable=''
+d_prctl=''
+d_prctl_set_name=''
 d_procselfexe=''
 procselfexe=''
 d_old_pthread_create_joinable=''
@@ -715,6 +729,8 @@ d_msg_peek=''
 d_msg_proxy=''
 d_oldsock=''
 d_scm_rights=''
+d_sin6_scope_id=''
+d_sockaddr_sa_len=''
 d_socket=''
 d_sockpair=''
 sockethdr=''
@@ -732,6 +748,8 @@ d_sresuproto=''
 d_statblks=''
 d_statfs_f_flags=''
 d_statfs_s=''
+d_static_inline=''
+perl_static_inline=''
 d_fstatvfs=''
 d_statvfs=''
 d_stdio_cnt_lval=''
@@ -777,6 +795,13 @@ d_tcsetpgrp=''
 d_telldirproto=''
 d_time=''
 timetype=''
+d_asctime64=''
+d_ctime64=''
+d_difftime64=''
+d_gmtime64=''
+d_localtime64=''
+d_mktime64=''
+d_timegm=''
 clocktype=''
 d_times=''
 d_tmpnam_r=''
@@ -810,6 +835,7 @@ d_wcstombs=''
 d_wctomb=''
 d_writev=''
 dlext=''
+bin_ELF=''
 cccdlflags=''
 ccdlflags=''
 dlsrc=''
@@ -873,7 +899,10 @@ i_mallocmalloc=''
 i_math=''
 i_memory=''
 i_mntent=''
+d_gdbm_ndbm_h_uses_prototypes=''
+d_gdbmndbm_h_uses_prototypes=''
 d_ndbm=''
+d_ndbm_h_uses_prototypes=''
 i_gdbm_ndbm=''
 i_gdbmndbm=''
 i_ndbm=''
@@ -1171,6 +1200,10 @@ stdchar=''
 d_stdio_stream_array=''
 stdio_stream_array=''
 sysman=''
+sGMTIME_max=''
+sGMTIME_min=''
+sLOCALTIME_max=''
+sLOCALTIME_min=''
 trnl=''
 uidformat=''
 uidsign=''
@@ -1203,6 +1236,7 @@ usethreads=''
 incpath=''
 mips_type=''
 usrinc=''
+vaproto=''
 d_vendorarch=''
 installvendorarch=''
 vendorarch=''
@@ -1272,12 +1306,26 @@ elif test -d c:/. -o -n "$is_os2" ; then
     _exe=".exe"
 fi
 
+groupstype=''
 i_whoami=''
+archname=''
+: Possible local include directories to search.
+: Set locincpth to "" in a hint file to defeat local include searches.
+locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
+locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
+:
+: no include file wanted by default
+inclwanted=''
+
+: Enable -DEBUGGING and -DDEBUGGING from the command line
+EBUGGING=''
+DEBUGGING=''
+
+: set usethreads on the Configure command line to enable threads.
+usereentrant='undef'
 : Trailing extension.  Override this in a hint file, if needed.
 : Extra object files, if any, needed on this platform.
 archobjs=''
-archname=''
-groupstype=''
 libnames=''
 : change the next line if compiling for Xenix/286 on Xenix/386
 xlibpth='/usr/lib/386 /lib/386'
@@ -1301,23 +1349,9 @@ plibpth=''
 libswanted=''
 : some systems want to use only the non-versioned libso:s
 ignore_versioned_solibs=''
-: set usethreads on the Configure command line to enable threads.
-usereentrant='undef'
 : full support for void wanted by default
 defvoidused=15
 
-: Possible local include directories to search.
-: Set locincpth to "" in a hint file to defeat local include searches.
-locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
-locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
-:
-: no include file wanted by default
-inclwanted=''
-
-: Enable -DEBUGGING and -DDEBUGGING from the command line
-EBUGGING=''
-DEBUGGING=old
-
 ccname=''
 ccversion=''
 perllibs=''
@@ -1408,14 +1442,14 @@ if `$sh -c '#' >/dev/null 2>&1`; then
        echo "#!$xcat" >sharp
        $eunicefix sharp
        chmod +x sharp
-       ./sharp > today
+       ./sharp > today 2>/dev/null
        if test -s today; then
                sharpbang='#!'
        else
                echo "#! $xcat" > sharp
                $eunicefix sharp
                chmod +x sharp
-               ./sharp > today
+               ./sharp > today 2>/dev/null
                if test -s today; then
                        sharpbang='#! '
                else
@@ -1939,7 +1973,7 @@ rm -f .echotmp
 echo " "
 if test -f "$rsrc/MANIFEST"; then
        echo "First let's make sure your kit is complete.  Checking..." >&4
-       awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" |\
+       awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | \
                (split -l 50 2>/dev/null || split -50)
        rm -f missing
        tmppwd=`pwd`
@@ -2127,7 +2161,8 @@ EOF
 : See if we are using a devel version and want that
 xversion=`awk '/define[        ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
 case "$usedevel" in
-$define|true|[yY]*) ;;
+$define|true|[yY]*)
+    usedevel="$define" ;;
 *) case "$xversion" in
    *[13579])
        cat >&4 <<EOH
@@ -2160,6 +2195,7 @@ EOH
        esac
        ;;
     esac
+    usedevel="$undef"
     ;;
 esac
 case "$usedevel" in
@@ -2217,7 +2253,7 @@ in the default answer, as if the default line was a set of arguments given to a
 script shell.  This means you may also use $* to repeat the whole default line,
 so you do not have to re-type everything to add something to the default.
 
-Everytime there is a substitution, you will have to confirm.  If there is an
+Every time there is a substitution, you will have to confirm.  If there is an
 error (e.g. an unmatched backtick), the default answer will remain unchanged
 and you will be prompted again.
 
@@ -2337,6 +2373,7 @@ make
 more
 nm
 nroff
+perl
 pg
 test
 uname
@@ -2413,6 +2450,15 @@ egrep)
        _egrep=$grep
        ;;
 esac
+case "$less" in
+'')    ;;
+*)     if $less -R </dev/null >/dev/null; then
+              echo "Substituting less -R for less."
+              less="$less -R"
+              _less=$less
+       fi
+       ;;
+esac
 case "$ln" in
 ln)
        echo "Substituting cp for ln."
@@ -4117,16 +4163,13 @@ else
        perl_patchlevel=0
        $echo "(You do not have patchlevel.h.  Eek.)"
 fi
-if $test -r $rsrc/.patch ; then
-       if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
-               perl_patchlevel=`cat $rsrc/.patch`
-       fi
-fi
 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
 version_patchlevel_string="version $patchlevel subversion $subversion"
 case "$perl_patchlevel" in
 0|'') ;;
-*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
+*)  perl_patchlevel=`echo $perl_patchlevel | sed 's/.* //'`
+    version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel"
+    ;;
 esac
 
 $echo "(You have $package $version_patchlevel_string.)"
@@ -6345,6 +6388,7 @@ eval $setvar
 $rm -f reflect flect
 
 : now see if they want to do setuid emulation
+if $test $patchlevel -lt 11; then
 echo " "
 val="$undef"
 case "$d_suidsafe" in
@@ -6376,6 +6420,20 @@ EOM
 esac
 set d_dosuid
 eval $setvar
+else
+    case "$d_dosuid" in
+       "$define")
+       cat >&4 <<EOH
+
+SUID emulation has been removed for 5.12
+Please re-run Configure without -Dd_dosuid
+
+EOH
+       exit 1;
+       ;;
+    esac
+    d_dosuid=undef
+fi
 
 : Find perl5.005 or later.
 echo "Looking for a previously installed perl5.005 or later... "
@@ -6489,6 +6547,7 @@ if (-d $stem) {
     chdir($stem);
     ;@candidates = map {
        [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
+    ;@candidates = sort { $a->[1] cmp $b->[1]} @candidates;
 }
 else {
     ;@candidates = ();
@@ -7004,6 +7063,11 @@ case "$vendorprefix" in
 esac
 prefixvar=vendorarch
 . ./installprefix
+if $test X"$vendorarch" = X"$vendorlib"; then
+       d_vendorarch="$undef"
+else
+       d_vendorarch="$define"
+fi
 
 : Final catch-all directories to search
 $cat <<EOM
@@ -7088,6 +7152,8 @@ esac
 
 : DTrace support
 dflt_dtrace='/usr/sbin/dtrace'
+$test -x /usr/bin/dtrace && dflt_dtrace='/usr/bin/dtrace'
+
 cat <<EOM
 
 Perl can be built to support DTrace on platforms that support it.
@@ -7444,9 +7510,10 @@ case "$nm_so_opt" in
        ;;
 esac
 
-: get list of predefined functions in a handy place
+: Figure out where the libc is located
 case "$runnm" in
 true)
+: get list of predefined functions in a handy place
 echo " "
 case "$libc" in
 '') libc=unknown
@@ -7603,7 +7670,7 @@ $echo $n ".$c"
 $grep fprintf libc.tmp > libc.ptf
 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
-xxx='[ADTSIW]'
+xxx='[ADTSIWi]'
 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
        eval $xscan;\
        $contains '^fprintf$' libc.list >/dev/null 2>&1; then
@@ -7673,31 +7740,31 @@ else
                echo " "
                echo "$nm didn't seem to work right. Trying $ar instead..." >&4
                com=''
-               if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
+               if $ar t $libc > libc.tmp && \
+                       $contains '^fprintf$' libc.tmp >/dev/null 2>&1
+               then
                        for thisname in $libnames $libc; do
                                $ar t $thisname >>libc.tmp
                        done
                        $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
                        echo "Ok." >&4
                elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
-                       # Repeat libc to extract forwarders to DLL entries too
                        for thisname in $libnames $libc; do
                                $ar tv $thisname >>libc.tmp
-                               # Revision 50 of EMX has bug in $ar.
-                               # it will not extract forwarders to DLL entries
-                               # Use emximp which will extract exactly them.
                                emximp -o tmp.imp $thisname \
                                    2>/dev/null && \
                                    $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
                                    < tmp.imp >>libc.tmp
-                               $rm tmp.imp
+                               $rm -f tmp.imp
                        done
                        $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
                        echo "Ok." >&4
                else
                        echo "$ar didn't seem to work right." >&4
                        echo "Maybe this is a Cray...trying bld instead..." >&4
-                       if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
+                       if  bld t $libc | \
+                               $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list &&
+                               $test -s libc.list
                        then
                                for thisname in $libnames; do
                                        bld t $libnames | \
@@ -7722,7 +7789,8 @@ define)
 *)  if $test -f /lib/syscalls.exp; then
        echo " "
        echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
-       $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
+       $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' \
+               /lib/syscalls.exp >>libc.list
     fi
     ;;
 esac
@@ -7767,6 +7835,10 @@ case "$3" in
 -a) tf=libc.tmp; tdc="[]";;
 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
 esac;
+case "$d_cplusplus" in
+    $define)   extern_C="extern \"C\"" ;;
+    *)         extern_C="extern"       ;;
+esac;
 tx=yes;
 case "$reuseval-$4" in
 true-) ;;
@@ -7775,20 +7847,17 @@ esac;
 case "$tx" in
 yes)
        tval=false;
-       case "$d_cplusplus" in
-               $define) extern_C=\"C\";;
-       esac;
        if $test "$runnm" = true; then
                if $contains $tlook $tf >/dev/null 2>&1; then
                        tval=true;
                elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
-                       echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
+                       echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
                        $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
                        $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
                        $rm_try;
                fi;
        else
-               echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
+               echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
                $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
                $rm_try;
        fi;
@@ -7877,6 +7946,7 @@ esac
 rp="Do you wish to use dynamic loading?"
 . ./myread
 usedl="$ans"
+bin_ELF="$undef"
 case "$ans" in
 y*) usedl="$define"
        case "$dlsrc" in
@@ -7973,6 +8043,7 @@ EOM
 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
 EOM
                        dflt="$cc"
+                       bin_ELF="$define"
                else
                        echo "I'll use ld to build dynamic libraries."
                        dflt='ld'
@@ -7999,6 +8070,7 @@ EOM
     case "$lddlflags" in
     '') case "$osname" in
                        beos) dflt='-nostart' ;;
+                       haiku) dflt='-shared' ;;
                        hpux) dflt='-b';
                              case "$gccversion" in
                              '') dflt="$dflt +vnocompatwarnings" ;;
@@ -8092,7 +8164,7 @@ $undef)
        ;;
 *)     case "$useshrplib" in
        '')     case "$osname" in
-               svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
+               svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|haiku|cygwin*)
                        dflt=y
                        also='Building a shared libperl is required for dynamic loading to work on your system.'
                        ;;
@@ -8140,15 +8212,22 @@ esac
 
 case "$useshrplib" in
 true)
+       case "$userelocatableinc" in
+       true|define)
+               echo "Cannot build with both -Duserelocatableinc and -Duseshrplib" >&4
+               echo "See INSTALL for an explanation why that won't work." >&4
+               exit 4
+               ;;
+       esac
        case "$libperl" in
        '')
                # Figure out a good name for libperl.so.  Since it gets stored in
                # a version-specific architecture-dependent library, the version
                # number isn't really that important, except for making cc/ld happy.
                #
-               # A name such as libperl.so.3.1
+               # A name such as libperl.so.10.1
                majmin="libperl.$so.$patchlevel.$subversion"
-               # A name such as libperl.so.301
+               # A name such as libperl.so.100
                majonly=`echo $patchlevel $subversion |
                        $awk '{printf "%d%02d", $1, $2}'`
                majonly=libperl.$so.$majonly
@@ -8162,8 +8241,12 @@ true)
                linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
                        dflt=libperl.$so
                        ;;
-               cygwin*) # ld links against an importlib
-                       dflt=libperl$lib_ext
+               cygwin*) # ld links now against the dll directly
+                       majmin="cygperl5_${patchlevel}_${subversion}.${so}"
+                       majonly=`echo $patchlevel $subversion |
+                               $awk '{printf "%03d%03d", $1, $2}'`
+                       majonly=cygperl5.$majonly.$so
+                       dflt=$majmin
                        ;;
                *)      # Try to guess based on whether libc has major.minor.
                        case "$libc" in
@@ -8243,7 +8326,7 @@ if "$useshrplib"; then
        solaris)
                xxx="-R $shrpdir"
                ;;
-       freebsd|netbsd|openbsd|interix|dragonfly)
+       freebsd|mirbsd|netbsd|openbsd|interix|dragonfly)
                xxx="-Wl,-R$shrpdir"
                ;;
        bsdos|linux|irix*|dec_osf|gnu*)
@@ -8255,10 +8338,16 @@ if "$useshrplib"; then
        beos)
                # beos doesn't like the default, either.
                ;;
+       haiku)
+               # Haiku doesn't like the default, either.
+               ;;
        hpux*)
                # hpux doesn't like the default, either.
                tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
                ;;
+       cygwin)
+               # cygwin needs only ldlibpth
+               ;;
        *)
                tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
                ;;
@@ -8698,11 +8787,11 @@ case "$myhostname" in
                                echo "(Attempting domain name extraction from $tans)"
                                dflt=.`$sed -n -e 's/   / /g' \
                                  -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
-                                 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
+                                 -e 1q 2>/dev/null`
                                case "$dflt" in
                                .) dflt=.`$sed -n -e 's/        / /g' \
                                     -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
-                                    | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
+                                    -e 1q 2>/dev/null`
                                        ;;
                                esac
                        fi
@@ -9478,6 +9567,46 @@ esac
 prefixvar=vendorscript
 . ./installprefix
 
+: script used to emit important warnings
+cat >warn <<EOS
+$startsh
+if test \$# -gt 0; then
+       echo "\$@" >msg
+else
+       cat >msg
+fi
+echo "*** WARNING:" >&4
+sed -e 's/^/*** /' <msg >&4
+echo "*** " >&4
+cat msg >>config.msg
+echo " " >>config.msg
+rm -f msg
+EOS
+chmod +x warn
+$eunicefix warn
+
+: see which of string.h or strings.h is needed
+echo " "
+strings=`./findhdr string.h`
+if $test "$strings" && $test -r "$strings"; then
+       echo "Using <string.h> instead of <strings.h>." >&4
+       val="$define"
+else
+       val="$undef"
+       strings=`./findhdr strings.h`
+       if $test "$strings" && $test -r "$strings"; then
+               echo "Using <strings.h> instead of <string.h>." >&4
+       else
+               ./warn "No string header found -- You'll surely have problems."
+       fi
+fi
+set i_string
+eval $setvar
+case "$i_string" in
+"$undef") strings=`./findhdr strings.h`;;
+*)       strings=`./findhdr string.h`;;
+esac
+
 : see if qgcvt exists
 set qgcvt d_qgcvt
 eval $inlibc
@@ -9651,15 +9780,18 @@ char *myname = "sprintf";
 
 #include <stdio.h>
 
-#define I_STDLIB $i_stdlib
+#$i_stdlib I_STDLIB
 #ifdef I_STDLIB
 #include <stdlib.h>
 #endif
+#$i_string I_STRING
+#ifdef I_STRING
+#  include <string.h>
+#else
+#  include <strings.h>
+#endif
 
-int
-checkit(expect, got)
-char *expect;
-char *got;
+int checkit(char *expect, char *got)
 {
     if (strcmp(expect, got)) {
                printf("%s oddity:  Expected %s, got %s\n",
@@ -9765,7 +9897,7 @@ done
 
 case "$d_longdbl$uselongdouble" in
 "$define$define")
-    : again, add prefered functions to our list first
+    : again, add preferred functions to our list first
     xxx_ld_list=""
     for xxx_convert in $gconvert_ld_preference; do
         case $xxx_convert in
@@ -9902,11 +10034,31 @@ eval $inlibc
 set alarm d_alarm
 eval $inlibc
 
+: see if 64bit time functions exists
+
+set ctime64 d_ctime64
+eval $inlibc
+
+set localtime64 d_localtime64
+eval $inlibc
+
+set gmtime64 d_gmtime64
+eval $inlibc
+
+set mktime64 d_mktime64
+eval $inlibc
+
+set difftime64 d_difftime64
+eval $inlibc
+
+set asctime64 d_asctime64
+eval $inlibc
+
 : see if POSIX threads are available
 set pthread.h i_pthread
 eval $inhdr
 
-: define a fucntion to check prototypes
+: define a function to check prototypes
 $cat > protochk <<EOSH
 $startsh
 cc="$cc"
@@ -10143,19 +10295,19 @@ case "$d_asctime_r" in
        define)
        case "$asctime_r_proto" in
        ''|0) try='char* asctime_r(const struct tm*, char*);'
-       ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
+       ./protochk "$extern_C $try" $hdrs && asctime_r_proto=B_SB ;;
        esac
        case "$asctime_r_proto" in
        ''|0) try='char* asctime_r(const struct tm*, char*, int);'
-       ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && asctime_r_proto=B_SBI ;;
        esac
        case "$asctime_r_proto" in
        ''|0) try='int asctime_r(const struct tm*, char*);'
-       ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
+       ./protochk "$extern_C $try" $hdrs && asctime_r_proto=I_SB ;;
        esac
        case "$asctime_r_proto" in
        ''|0) try='int asctime_r(const struct tm*, char*, int);'
-       ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && asctime_r_proto=I_SBI ;;
        esac
        case "$asctime_r_proto" in
        ''|0)   d_asctime_r=undef
@@ -10400,6 +10552,34 @@ set d_attribute_unused
 eval $setvar
 $rm -f attrib*
 
+: Look for GCC-style attribute deprecated
+case "$d_attribute_deprecated" in
+'')
+echo " "
+echo "Checking whether your compiler can handle __attribute__((deprecated)) ..." >&4
+$cat >attrib.c <<'EOCP'
+#include <stdio.h>
+int I_am_deprecated(void) __attribute__((deprecated));
+EOCP
+if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
+       if $contains 'warning' attrib.out >/dev/null 2>&1; then
+               echo "Your C compiler doesn't support __attribute__((deprecated))."
+               val="$undef"
+       else
+               echo "Your C compiler supports __attribute__((deprecated))."
+               val="$define"
+       fi
+else
+       echo "Your C compiler doesn't seem to understand __attribute__ at all."
+       val="$undef"
+fi
+;;
+*) val="$d_attribute_deprecated" ;;
+esac
+set d_attribute_deprecated
+eval $setvar
+$rm -f attrib*
+
 : Look for GCC-style attribute warn_unused_result
 case "$d_attribute_warn_unused_result" in
 '')
@@ -10849,7 +11029,7 @@ int main()
        signal(SIGFPE, blech);
 
        /* Don't let compiler optimize the test away.  Store the number
-          in a writable string for gcc to pass to sscanf under HP/UX.
+          in a writable string for gcc to pass to sscanf under HP-UX.
        */
        sprintf(str, "2147483647");
        sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
@@ -10916,7 +11096,7 @@ int main()
           optimized the whole file away
        */
        /* Store the number in a writable string for gcc to pass to
-          sscanf under HP/UX.
+          sscanf under HP-UX.
        */
        sprintf(str, "-123");
        sscanf(str, "%lf", &f);  /* f = -123.; */
@@ -11171,6 +11351,41 @@ eval $inlibc
 
 
 echo " "
+echo "Checking the availability sa_len in the sock struct ..." >&4
+$cat >try.c <<EOF
+#include <sys/types.h>
+#include <sys/socket.h>
+int main() {
+struct sockaddr sa;
+return (sa.sa_len);
+}
+EOF
+val="$undef"
+set try; if eval $compile; then
+       val="$define"
+fi
+set d_sockaddr_sa_len; eval $setvar
+$rm_try
+
+echo " "
+echo "Checking the availability sin6_scope_id in struct sockaddr_in6 ..." >&4
+$cat >try.c <<EOF
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+int main() {
+struct sockaddr_in6 sin6;
+return (sin6.sin6_scope_id);
+}
+EOF
+val="$undef"
+set try; if eval $compile; then
+       val="$define"
+fi
+set d_sin6_scope_id; eval $setvar
+$rm_try
+
+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]'`
@@ -11288,11 +11503,11 @@ case "$d_crypt_r" in
        define)
        case "$crypt_r_proto" in
        ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
-       ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
+       ./protochk "$extern_C $try" $hdrs && crypt_r_proto=B_CCS ;;
        esac
        case "$crypt_r_proto" in
        ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
-       ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
+       ./protochk "$extern_C $try" $hdrs && crypt_r_proto=B_CCD ;;
        esac
        case "$crypt_r_proto" in
        ''|0)   d_crypt_r=undef
@@ -11349,7 +11564,7 @@ case "$d_ctermid_r" in
        define)
        case "$ctermid_r_proto" in
        ''|0) try='char* ctermid_r(char*);'
-       ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
+       ./protochk "$extern_C $try" $hdrs && ctermid_r_proto=B_B ;;
        esac
        case "$ctermid_r_proto" in
        ''|0)   d_ctermid_r=undef
@@ -11390,19 +11605,19 @@ case "$d_ctime_r" in
        define)
        case "$ctime_r_proto" in
        ''|0) try='char* ctime_r(const time_t*, char*);'
-       ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
+       ./protochk "$extern_C $try" $hdrs && ctime_r_proto=B_SB ;;
        esac
        case "$ctime_r_proto" in
        ''|0) try='char* ctime_r(const time_t*, char*, int);'
-       ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && ctime_r_proto=B_SBI ;;
        esac
        case "$ctime_r_proto" in
        ''|0) try='int ctime_r(const time_t*, char*);'
-       ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
+       ./protochk "$extern_C $try" $hdrs && ctime_r_proto=I_SB ;;
        esac
        case "$ctime_r_proto" in
        ''|0) try='int ctime_r(const time_t*, char*, int);'
-       ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && ctime_r_proto=I_SBI ;;
        esac
        case "$ctime_r_proto" in
        ''|0)   d_ctime_r=undef
@@ -11808,7 +12023,7 @@ case "$d_drand48_r" in
        define)
        case "$drand48_r_proto" in
        ''|0) try='int drand48_r(struct drand48_data*, double*);'
-       ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
+       ./protochk "$extern_C $try" $hdrs && drand48_r_proto=I_ST ;;
        esac
        case "$drand48_r_proto" in
        ''|0)   d_drand48_r=undef
@@ -11891,11 +12106,11 @@ case "$d_endgrent_r" in
        define)
        case "$endgrent_r_proto" in
        ''|0) try='int endgrent_r(FILE**);'
-       ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
+       ./protochk "$extern_C $try" $hdrs && endgrent_r_proto=I_H ;;
        esac
        case "$endgrent_r_proto" in
        ''|0) try='void endgrent_r(FILE**);'
-       ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
+       ./protochk "$extern_C $try" $hdrs && endgrent_r_proto=V_H ;;
        esac
        case "$endgrent_r_proto" in
        ''|0)   d_endgrent_r=undef
@@ -11944,11 +12159,11 @@ case "$d_endhostent_r" in
        define)
        case "$endhostent_r_proto" in
        ''|0) try='int endhostent_r(struct hostent_data*);'
-       ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
+       ./protochk "$extern_C $try" $hdrs && endhostent_r_proto=I_D ;;
        esac
        case "$endhostent_r_proto" in
        ''|0) try='void endhostent_r(struct hostent_data*);'
-       ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
+       ./protochk "$extern_C $try" $hdrs && endhostent_r_proto=V_D ;;
        esac
        case "$endhostent_r_proto" in
        ''|0)   d_endhostent_r=undef
@@ -11993,11 +12208,11 @@ case "$d_endnetent_r" in
        define)
        case "$endnetent_r_proto" in
        ''|0) try='int endnetent_r(struct netent_data*);'
-       ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
+       ./protochk "$extern_C $try" $hdrs && endnetent_r_proto=I_D ;;
        esac
        case "$endnetent_r_proto" in
        ''|0) try='void endnetent_r(struct netent_data*);'
-       ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
+       ./protochk "$extern_C $try" $hdrs && endnetent_r_proto=V_D ;;
        esac
        case "$endnetent_r_proto" in
        ''|0)   d_endnetent_r=undef
@@ -12042,11 +12257,11 @@ case "$d_endprotoent_r" in
        define)
        case "$endprotoent_r_proto" in
        ''|0) try='int endprotoent_r(struct protoent_data*);'
-       ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
+       ./protochk "$extern_C $try" $hdrs && endprotoent_r_proto=I_D ;;
        esac
        case "$endprotoent_r_proto" in
        ''|0) try='void endprotoent_r(struct protoent_data*);'
-       ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
+       ./protochk "$extern_C $try" $hdrs && endprotoent_r_proto=V_D ;;
        esac
        case "$endprotoent_r_proto" in
        ''|0)   d_endprotoent_r=undef
@@ -12179,11 +12394,11 @@ case "$d_endpwent_r" in
        define)
        case "$endpwent_r_proto" in
        ''|0) try='int endpwent_r(FILE**);'
-       ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
+       ./protochk "$extern_C $try" $hdrs && endpwent_r_proto=I_H ;;
        esac
        case "$endpwent_r_proto" in
        ''|0) try='void endpwent_r(FILE**);'
-       ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
+       ./protochk "$extern_C $try" $hdrs && endpwent_r_proto=V_H ;;
        esac
        case "$endpwent_r_proto" in
        ''|0)   d_endpwent_r=undef
@@ -12228,11 +12443,11 @@ case "$d_endservent_r" in
        define)
        case "$endservent_r_proto" in
        ''|0) try='int endservent_r(struct servent_data*);'
-       ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
+       ./protochk "$extern_C $try" $hdrs && endservent_r_proto=I_D ;;
        esac
        case "$endservent_r_proto" in
        ''|0) try='void endservent_r(struct servent_data*);'
-       ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
+       ./protochk "$extern_C $try" $hdrs && endservent_r_proto=V_D ;;
        esac
        case "$endservent_r_proto" in
        ''|0)   d_endservent_r=undef
@@ -12311,46 +12526,6 @@ set d_open3
 eval $setvar
 $rm_try
 
-: script used to emit important warnings
-cat >warn <<EOS
-$startsh
-if test \$# -gt 0; then
-       echo "\$@" >msg
-else
-       cat >msg
-fi
-echo "*** WARNING:" >&4
-sed -e 's/^/*** /' <msg >&4
-echo "*** " >&4
-cat msg >>config.msg
-echo " " >>config.msg
-rm -f msg
-EOS
-chmod +x warn
-$eunicefix warn
-
-: see which of string.h or strings.h is needed
-echo " "
-strings=`./findhdr string.h`
-if $test "$strings" && $test -r "$strings"; then
-       echo "Using <string.h> instead of <strings.h>." >&4
-       val="$define"
-else
-       val="$undef"
-       strings=`./findhdr strings.h`
-       if $test "$strings" && $test -r "$strings"; then
-               echo "Using <strings.h> instead of <string.h>." >&4
-       else
-               ./warn "No string header found -- You'll surely have problems."
-       fi
-fi
-set i_string
-eval $setvar
-case "$i_string" in
-"$undef") strings=`./findhdr strings.h`;;
-*)       strings=`./findhdr string.h`;;
-esac
-
 : see if this is a sys/file.h system
 val=''
 set sys/file.h val
@@ -13234,6 +13409,64 @@ else
 fi
 $rm_try
 
+: see if ndbm.h is available
+set ndbm.h i_ndbm
+eval $inhdr
+: Compatibility location for RedHat 7.1
+set gdbm/ndbm.h i_gdbmndbm
+eval $inhdr
+: Compatibility location for Debian 4.0
+set gdbm-ndbm.h i_gdbm_ndbm
+eval $inhdr
+
+val="$undef"
+if $test "$i_ndbm" = "$define" -o "$i_gdbmndbm" = "$define" -o "$i_gdbm_ndbm" = "$define"; then
+       : see if dbm_open exists
+       set dbm_open d_dbm_open
+       eval $inlibc
+       case "$d_dbm_open" in
+       $undef)
+               i_ndbm="$undef"
+               i_gdbmndbm="$undef"
+               i_gdbm_ndbm="$undef"
+               echo "We won't be including <ndbm.h>"
+               val="$undef"
+               ;;
+       *) val="$define"
+          ;;
+       esac
+fi
+set d_ndbm
+eval $setvar
+
+ndbm_hdr_protochk='name=$1; hdr=$2;
+eval "ihdr=\$""i_$name";
+val="$undef";
+if $test "$ihdr" = "$define"; then
+       $echo "Checking if your <$hdr> uses prototypes..." >&4;
+       case "$d_cplusplus" in
+       $define) ./protochk "$extern_C void dbm_close(DBM *);" literal "extern \"C\" {" $ihdr $hdr literal "}" && val="$define" ;;
+       *) ./protochk "$extern_C void dbm_close(int, int);" $ihdr $hdr || val="$define" ;;
+       esac;
+       case "$val" in
+       $define) $echo "Your <$hdr> seems to have prototypes";;
+       *) $echo "Your <$hdr> does not seem to have prototypes";;
+       esac;
+fi;
+set "d_${name}_h_uses_prototypes";
+eval $setvar'
+
+set ndbm ndbm.h
+eval $ndbm_hdr_protochk
+set gdbmndbm gdbm/ndbm.h
+eval $ndbm_hdr_protochk
+set gdbm_ndbm gdbm-ndbm.h
+eval $ndbm_hdr_protochk
+
+: see if getaddrinfo exists
+set getaddrinfo d_getaddrinfo
+eval $inlibc
+
 : see if getcwd exists
 set getcwd d_getcwd
 eval $inlibc
@@ -13266,27 +13499,27 @@ case "$d_getgrent_r" in
        define)
        case "$getgrent_r_proto" in
        ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
-       ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getgrent_r_proto=I_SBWR ;;
        esac
        case "$getgrent_r_proto" in
        ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
-       ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
+       ./protochk "$extern_C $try" $hdrs && getgrent_r_proto=I_SBIR ;;
        esac
        case "$getgrent_r_proto" in
        ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
-       ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
+       ./protochk "$extern_C $try" $hdrs && getgrent_r_proto=S_SBW ;;
        esac
        case "$getgrent_r_proto" in
        ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
-       ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && getgrent_r_proto=S_SBI ;;
        esac
        case "$getgrent_r_proto" in
        ''|0) try='int getgrent_r(struct group*, char*, int);'
-       ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && getgrent_r_proto=I_SBI ;;
        esac
        case "$getgrent_r_proto" in
        ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
-       ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
+       ./protochk "$extern_C $try" $hdrs && getgrent_r_proto=I_SBIH ;;
        esac
        case "$getgrent_r_proto" in
        ''|0)   d_getgrent_r=undef
@@ -13327,19 +13560,19 @@ case "$d_getgrgid_r" in
        define)
        case "$getgrgid_r_proto" in
        ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
-       ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
        esac
        case "$getgrgid_r_proto" in
        ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
-       ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
+       ./protochk "$extern_C $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
        esac
        case "$getgrgid_r_proto" in
        ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
-       ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
        esac
        case "$getgrgid_r_proto" in
        ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
-       ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
        esac
        case "$getgrgid_r_proto" in
        ''|0)   d_getgrgid_r=undef
@@ -13380,23 +13613,23 @@ case "$d_getgrnam_r" in
        define)
        case "$getgrnam_r_proto" in
        ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
-       ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
        esac
        case "$getgrnam_r_proto" in
        ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
-       ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
+       ./protochk "$extern_C $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
        esac
        case "$getgrnam_r_proto" in
        ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
-       ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
+       ./protochk "$extern_C $try" $hdrs && getgrnam_r_proto=S_CBI ;;
        esac
        case "$getgrnam_r_proto" in
        ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
-       ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
        esac
        case "$getgrnam_r_proto" in
        ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
-       ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
        esac
        case "$getgrnam_r_proto" in
        ''|0)   d_getgrnam_r=undef
@@ -13534,47 +13767,47 @@ case "$d_gethostbyaddr_r" in
        define)
        case "$gethostbyaddr_r_proto" in
        ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
-       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
        esac
        case "$gethostbyaddr_r_proto" in
        ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
-       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
        esac
        case "$gethostbyaddr_r_proto" in
        ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
-       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
        esac
        case "$gethostbyaddr_r_proto" in
        ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
-       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
        esac
        case "$gethostbyaddr_r_proto" in
        ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
-       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
        esac
        case "$gethostbyaddr_r_proto" in
        ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
-       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
        esac
        case "$gethostbyaddr_r_proto" in
        ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
-       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
        esac
        case "$gethostbyaddr_r_proto" in
        ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
-       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
        esac
        case "$gethostbyaddr_r_proto" in
        ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
-       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
        esac
        case "$gethostbyaddr_r_proto" in
        ''|0) try='int gethostbyaddr_r(const char*, int, int);'
-       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
        esac
        case "$gethostbyaddr_r_proto" in
        ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
-       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
        esac
        case "$gethostbyaddr_r_proto" in
        ''|0)   d_gethostbyaddr_r=undef
@@ -13615,15 +13848,15 @@ case "$d_gethostbyname_r" in
        define)
        case "$gethostbyname_r_proto" in
        ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
-       ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
        esac
        case "$gethostbyname_r_proto" in
        ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
-       ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
        esac
        case "$gethostbyname_r_proto" in
        ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
-       ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
+       ./protochk "$extern_C $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
        esac
        case "$gethostbyname_r_proto" in
        ''|0)   d_gethostbyname_r=undef
@@ -13664,27 +13897,27 @@ case "$d_gethostent_r" in
        define)
        case "$gethostent_r_proto" in
        ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
-       ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
        esac
        case "$gethostent_r_proto" in
        ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
-       ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostent_r_proto=I_SBIE ;;
        esac
        case "$gethostent_r_proto" in
        ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
-       ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
+       ./protochk "$extern_C $try" $hdrs && gethostent_r_proto=S_SBIE ;;
        esac
        case "$gethostent_r_proto" in
        ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
-       ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && gethostent_r_proto=S_SBI ;;
        esac
        case "$gethostent_r_proto" in
        ''|0) try='int gethostent_r(struct hostent*, char*, int);'
-       ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && gethostent_r_proto=I_SBI ;;
        esac
        case "$gethostent_r_proto" in
        ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
-       ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
+       ./protochk "$extern_C $try" $hdrs && gethostent_r_proto=I_SD ;;
        esac
        case "$gethostent_r_proto" in
        ''|0)   d_gethostent_r=undef
@@ -13738,19 +13971,19 @@ case "$d_getlogin_r" in
        define)
        case "$getlogin_r_proto" in
        ''|0) try='int getlogin_r(char*, size_t);'
-       ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
+       ./protochk "$extern_C $try" $hdrs && getlogin_r_proto=I_BW ;;
        esac
        case "$getlogin_r_proto" in
        ''|0) try='int getlogin_r(char*, int);'
-       ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
+       ./protochk "$extern_C $try" $hdrs && getlogin_r_proto=I_BI ;;
        esac
        case "$getlogin_r_proto" in
        ''|0) try='char* getlogin_r(char*, size_t);'
-       ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
+       ./protochk "$extern_C $try" $hdrs && getlogin_r_proto=B_BW ;;
        esac
        case "$getlogin_r_proto" in
        ''|0) try='char* getlogin_r(char*, int);'
-       ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
+       ./protochk "$extern_C $try" $hdrs && getlogin_r_proto=B_BI ;;
        esac
        case "$getlogin_r_proto" in
        ''|0)   d_getlogin_r=undef
@@ -13783,6 +14016,10 @@ eval $inlibc
 set getmntent d_getmntent
 eval $inlibc
 
+: see if getnameinfo exists
+set getnameinfo d_getnameinfo
+eval $inlibc
+
 : see if getnetbyaddr exists
 set getnetbyaddr d_getnbyaddr
 eval $inlibc
@@ -13811,35 +14048,35 @@ case "$d_getnetbyaddr_r" in
        define)
        case "$getnetbyaddr_r_proto" in
        ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
-       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
+       ./protochk "$extern_C $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
        esac
        case "$getnetbyaddr_r_proto" in
        ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
+       ./protochk "$extern_C $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
        esac
        case "$getnetbyaddr_r_proto" in
        ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
+       ./protochk "$extern_C $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
        esac
        case "$getnetbyaddr_r_proto" in
        ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
+       ./protochk "$extern_C $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
        esac
        case "$getnetbyaddr_r_proto" in
        ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
-       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
+       ./protochk "$extern_C $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
        esac
        case "$getnetbyaddr_r_proto" in
        ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
-       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
+       ./protochk "$extern_C $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
        esac
        case "$getnetbyaddr_r_proto" in
        ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
-       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
+       ./protochk "$extern_C $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
        esac
        case "$getnetbyaddr_r_proto" in
        ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
-       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
+       ./protochk "$extern_C $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
        esac
        case "$getnetbyaddr_r_proto" in
        ''|0)   d_getnetbyaddr_r=undef
@@ -13880,19 +14117,19 @@ case "$d_getnetbyname_r" in
        define)
        case "$getnetbyname_r_proto" in
        ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
-       ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
+       ./protochk "$extern_C $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
        esac
        case "$getnetbyname_r_proto" in
        ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
        esac
        case "$getnetbyname_r_proto" in
        ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
        esac
        case "$getnetbyname_r_proto" in
        ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
-       ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
+       ./protochk "$extern_C $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
        esac
        case "$getnetbyname_r_proto" in
        ''|0)   d_getnetbyname_r=undef
@@ -13933,27 +14170,27 @@ case "$d_getnetent_r" in
        define)
        case "$getnetent_r_proto" in
        ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
-       ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
+       ./protochk "$extern_C $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
        esac
        case "$getnetent_r_proto" in
        ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
-       ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
+       ./protochk "$extern_C $try" $hdrs && getnetent_r_proto=I_SBIE ;;
        esac
        case "$getnetent_r_proto" in
        ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
-       ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
+       ./protochk "$extern_C $try" $hdrs && getnetent_r_proto=S_SBIE ;;
        esac
        case "$getnetent_r_proto" in
        ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && getnetent_r_proto=S_SBI ;;
        esac
        case "$getnetent_r_proto" in
        ''|0) try='int getnetent_r(struct netent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && getnetent_r_proto=I_SBI ;;
        esac
        case "$getnetent_r_proto" in
        ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
-       ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
+       ./protochk "$extern_C $try" $hdrs && getnetent_r_proto=I_SD ;;
        esac
        case "$getnetent_r_proto" in
        ''|0)   d_getnetent_r=undef
@@ -14033,15 +14270,15 @@ case "$d_getprotobyname_r" in
        define)
        case "$getprotobyname_r_proto" in
        ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
-       ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
        esac
        case "$getprotobyname_r_proto" in
        ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
        esac
        case "$getprotobyname_r_proto" in
        ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
-       ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
+       ./protochk "$extern_C $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
        esac
        case "$getprotobyname_r_proto" in
        ''|0)   d_getprotobyname_r=undef
@@ -14082,15 +14319,15 @@ case "$d_getprotobynumber_r" in
        define)
        case "$getprotobynumber_r_proto" in
        ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
-       ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
        esac
        case "$getprotobynumber_r_proto" in
        ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
+       ./protochk "$extern_C $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
        esac
        case "$getprotobynumber_r_proto" in
        ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
-       ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
+       ./protochk "$extern_C $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
        esac
        case "$getprotobynumber_r_proto" in
        ''|0)   d_getprotobynumber_r=undef
@@ -14131,19 +14368,19 @@ case "$d_getprotoent_r" in
        define)
        case "$getprotoent_r_proto" in
        ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
-       ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
        esac
        case "$getprotoent_r_proto" in
        ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && getprotoent_r_proto=I_SBI ;;
        esac
        case "$getprotoent_r_proto" in
        ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && getprotoent_r_proto=S_SBI ;;
        esac
        case "$getprotoent_r_proto" in
        ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
-       ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
+       ./protochk "$extern_C $try" $hdrs && getprotoent_r_proto=I_SD ;;
        esac
        case "$getprotoent_r_proto" in
        ''|0)   d_getprotoent_r=undef
@@ -14197,27 +14434,27 @@ case "$d_getpwent_r" in
        define)
        case "$getpwent_r_proto" in
        ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
-       ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getpwent_r_proto=I_SBWR ;;
        esac
        case "$getpwent_r_proto" in
        ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
-       ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
+       ./protochk "$extern_C $try" $hdrs && getpwent_r_proto=I_SBIR ;;
        esac
        case "$getpwent_r_proto" in
        ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
-       ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
+       ./protochk "$extern_C $try" $hdrs && getpwent_r_proto=S_SBW ;;
        esac
        case "$getpwent_r_proto" in
        ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
-       ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && getpwent_r_proto=S_SBI ;;
        esac
        case "$getpwent_r_proto" in
        ''|0) try='int getpwent_r(struct passwd*, char*, int);'
-       ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && getpwent_r_proto=I_SBI ;;
        esac
        case "$getpwent_r_proto" in
        ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
-       ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
+       ./protochk "$extern_C $try" $hdrs && getpwent_r_proto=I_SBIH ;;
        esac
        case "$getpwent_r_proto" in
        ''|0)   d_getpwent_r=undef
@@ -14258,19 +14495,19 @@ case "$d_getpwnam_r" in
        define)
        case "$getpwnam_r_proto" in
        ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
-       ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
        esac
        case "$getpwnam_r_proto" in
        ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
-       ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
+       ./protochk "$extern_C $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
        esac
        case "$getpwnam_r_proto" in
        ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
-       ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
        esac
        case "$getpwnam_r_proto" in
        ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
-       ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
        esac
        case "$getpwnam_r_proto" in
        ''|0)   d_getpwnam_r=undef
@@ -14311,19 +14548,19 @@ case "$d_getpwuid_r" in
        define)
        case "$getpwuid_r_proto" in
        ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
-       ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
        esac
        case "$getpwuid_r_proto" in
        ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
-       ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
+       ./protochk "$extern_C $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
        esac
        case "$getpwuid_r_proto" in
        ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
-       ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
        esac
        case "$getpwuid_r_proto" in
        ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
-       ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
        esac
        case "$getpwuid_r_proto" in
        ''|0)   d_getpwuid_r=undef
@@ -14378,15 +14615,15 @@ case "$d_getservbyname_r" in
        define)
        case "$getservbyname_r_proto" in
        ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
-       ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
        esac
        case "$getservbyname_r_proto" in
        ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
        esac
        case "$getservbyname_r_proto" in
        ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
-       ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
+       ./protochk "$extern_C $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
        esac
        case "$getservbyname_r_proto" in
        ''|0)   d_getservbyname_r=undef
@@ -14427,15 +14664,15 @@ case "$d_getservbyport_r" in
        define)
        case "$getservbyport_r_proto" in
        ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
-       ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
        esac
        case "$getservbyport_r_proto" in
        ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
        esac
        case "$getservbyport_r_proto" in
        ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
-       ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
+       ./protochk "$extern_C $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
        esac
        case "$getservbyport_r_proto" in
        ''|0)   d_getservbyport_r=undef
@@ -14476,19 +14713,19 @@ case "$d_getservent_r" in
        define)
        case "$getservent_r_proto" in
        ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
-       ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getservent_r_proto=I_SBWR ;;
        esac
        case "$getservent_r_proto" in
        ''|0) try='int getservent_r(struct servent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && getservent_r_proto=I_SBI ;;
        esac
        case "$getservent_r_proto" in
        ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
-       ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
+       ./protochk "$extern_C $try" $hdrs && getservent_r_proto=S_SBI ;;
        esac
        case "$getservent_r_proto" in
        ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
-       ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
+       ./protochk "$extern_C $try" $hdrs && getservent_r_proto=I_SD ;;
        esac
        case "$getservent_r_proto" in
        ''|0)   d_getservent_r=undef
@@ -14542,11 +14779,11 @@ case "$d_getspnam_r" in
        define)
        case "$getspnam_r_proto" in
        ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
-       ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
+       ./protochk "$extern_C $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
        esac
        case "$getspnam_r_proto" in
        ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
-       ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
+       ./protochk "$extern_C $try" $hdrs && getspnam_r_proto=S_CSBI ;;
        esac
        case "$getspnam_r_proto" in
        ''|0)   d_getspnam_r=undef
@@ -14606,11 +14843,11 @@ case "$d_gmtime_r" in
        define)
        case "$gmtime_r_proto" in
        ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
-       ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
+       ./protochk "$extern_C $try" $hdrs && gmtime_r_proto=S_TS ;;
        esac
        case "$gmtime_r_proto" in
        ''|0) try='int gmtime_r(const time_t*, struct tm*);'
-       ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
+       ./protochk "$extern_C $try" $hdrs && gmtime_r_proto=I_TS ;;
        esac
        case "$gmtime_r_proto" in
        ''|0)   d_gmtime_r=undef
@@ -14726,6 +14963,14 @@ set d_index; eval $setvar
 set inet_aton d_inetaton
 eval $inlibc
 
+: see if inet_ntop exists
+set inet_ntop d_inetntop
+eval $inlibc
+
+: see if inet_pton exists
+set inet_pton d_inetpton
+eval $inlibc
+
 : Look for isascii
 echo " "
 $cat >isascii.c <<EOCP
@@ -14886,11 +15131,11 @@ case "$d_localtime_r" in
        define)
        case "$localtime_r_proto" in
        ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
-       ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
+       ./protochk "$extern_C $try" $hdrs && localtime_r_proto=S_TS ;;
        esac
        case "$localtime_r_proto" in
        ''|0) try='int localtime_r(const time_t*, struct tm*);'
-       ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
+       ./protochk "$extern_C $try" $hdrs && localtime_r_proto=I_TS ;;
        esac
        case "$localtime_r_proto" in
        ''|0)   d_localtime_r=undef
@@ -14922,11 +15167,32 @@ REENTRANT_PROTO*)
 /*  Does our libc's localtime_r call tzset ?
  *  return 0 if so, 1 otherwise.
  */
-#include <sys/types.h>
-#include <unistd.h>
-#include <time.h>
-#include <string.h>
-#include <malloc.h>
+#$i_systypes   I_SYS_TYPES
+#$i_unistd     I_UNISTD
+#$i_time       I_TIME
+#$i_stdlib     I_STDLIB
+#$i_string     I_STRING
+#$i_malloc     I_MALLOC
+#ifdef I_SYS_TYPES
+#  include <sys/types.h>
+#endif
+#ifdef I_UNISTD
+#  include <unistd.h>
+#endif
+#ifdef I_TIME
+#  include <time.h>
+#endif
+#ifdef I_STDLIB
+#include <stdlib.h>
+#endif
+#ifdef I_STRING
+#  include <string.h>
+#else
+#  include <strings.h>
+#endif
+#ifdef I_MALLOC
+#  include <malloc.h>
+#endif
 int main()
 {
     time_t t = time(0L);
@@ -15818,6 +16084,31 @@ eval $inlibc
 set poll d_poll
 eval $inlibc
 
+: see if prctl exists
+set prctl d_prctl
+eval $inlibc
+
+: see if prctl supports PR_SET_NAME
+d_prctl_set_name=$undef
+case $d_prctl in
+    $define)
+       $cat >try.c <<EOM
+#include <sys/prctl.h>
+
+int main (int argc, char *argv[])
+{
+    return (prctl (PR_SET_NAME, "Test"));
+    } /* main */
+EOM
+       set try
+       if eval $compile_ok && $run ./try; then
+           echo "Your prctl (PR_SET_NAME, ...) works"
+           d_prctl_set_name=$define
+           fi
+       $rm_try
+       ;;
+    esac
+
 : see if readlink exists
 set readlink d_readlink
 eval $inlibc
@@ -16015,15 +16306,15 @@ case "$d_random_r" in
        define)
        case "$random_r_proto" in
        ''|0) try='int random_r(int*, struct random_data*);'
-       ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
+       ./protochk "$extern_C $try" $hdrs && random_r_proto=I_iS ;;
        esac
        case "$random_r_proto" in
        ''|0) try='int random_r(long*, struct random_data*);'
-       ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
+       ./protochk "$extern_C $try" $hdrs && random_r_proto=I_lS ;;
        esac
        case "$random_r_proto" in
        ''|0) try='int random_r(struct random_data*, int32_t*);'
-       ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
+       ./protochk "$extern_C $try" $hdrs && random_r_proto=I_St ;;
        esac
        case "$random_r_proto" in
        ''|0)   d_random_r=undef
@@ -16074,11 +16365,11 @@ case "$d_readdir64_r" in
        define)
        case "$readdir64_r_proto" in
        ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
-       ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
+       ./protochk "$extern_C $try" $hdrs && readdir64_r_proto=I_TSR ;;
        esac
        case "$readdir64_r_proto" in
        ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
-       ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
+       ./protochk "$extern_C $try" $hdrs && readdir64_r_proto=I_TS ;;
        esac
        case "$readdir64_r_proto" in
        ''|0)   d_readdir64_r=undef
@@ -16119,11 +16410,11 @@ case "$d_readdir_r" in
        define)
        case "$readdir_r_proto" in
        ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
-       ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
+       ./protochk "$extern_C $try" $hdrs && readdir_r_proto=I_TSR ;;
        esac
        case "$readdir_r_proto" in
        ''|0) try='int readdir_r(DIR*, struct dirent*);'
-       ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
+       ./protochk "$extern_C $try" $hdrs && readdir_r_proto=I_TS ;;
        esac
        case "$readdir_r_proto" in
        ''|0)   d_readdir_r=undef
@@ -16675,11 +16966,11 @@ case "$d_setgrent_r" in
        define)
        case "$setgrent_r_proto" in
        ''|0) try='int setgrent_r(FILE**);'
-       ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
+       ./protochk "$extern_C $try" $hdrs && setgrent_r_proto=I_H ;;
        esac
        case "$setgrent_r_proto" in
        ''|0) try='void setgrent_r(FILE**);'
-       ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
+       ./protochk "$extern_C $try" $hdrs && setgrent_r_proto=V_H ;;
        esac
        case "$setgrent_r_proto" in
        ''|0)   d_setgrent_r=undef
@@ -16724,11 +17015,11 @@ case "$d_sethostent_r" in
        define)
        case "$sethostent_r_proto" in
        ''|0) try='int sethostent_r(int, struct hostent_data*);'
-       ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
+       ./protochk "$extern_C $try" $hdrs && sethostent_r_proto=I_ID ;;
        esac
        case "$sethostent_r_proto" in
        ''|0) try='void sethostent_r(int, struct hostent_data*);'
-       ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
+       ./protochk "$extern_C $try" $hdrs && sethostent_r_proto=V_ID ;;
        esac
        case "$sethostent_r_proto" in
        ''|0)   d_sethostent_r=undef
@@ -16785,7 +17076,7 @@ case "$d_setlocale_r" in
        define)
        case "$setlocale_r_proto" in
        ''|0) try='int setlocale_r(int, const char*, char*, int);'
-       ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
+       ./protochk "$extern_C $try" $hdrs && setlocale_r_proto=I_ICBI ;;
        esac
        case "$setlocale_r_proto" in
        ''|0)   d_setlocale_r=undef
@@ -16830,11 +17121,11 @@ case "$d_setnetent_r" in
        define)
        case "$setnetent_r_proto" in
        ''|0) try='int setnetent_r(int, struct netent_data*);'
-       ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
+       ./protochk "$extern_C $try" $hdrs && setnetent_r_proto=I_ID ;;
        esac
        case "$setnetent_r_proto" in
        ''|0) try='void setnetent_r(int, struct netent_data*);'
-       ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
+       ./protochk "$extern_C $try" $hdrs && setnetent_r_proto=V_ID ;;
        esac
        case "$setnetent_r_proto" in
        ''|0)   d_setnetent_r=undef
@@ -16895,11 +17186,11 @@ case "$d_setprotoent_r" in
        define)
        case "$setprotoent_r_proto" in
        ''|0) try='int setprotoent_r(int, struct protoent_data*);'
-       ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
+       ./protochk "$extern_C $try" $hdrs && setprotoent_r_proto=I_ID ;;
        esac
        case "$setprotoent_r_proto" in
        ''|0) try='void setprotoent_r(int, struct protoent_data*);'
-       ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
+       ./protochk "$extern_C $try" $hdrs && setprotoent_r_proto=V_ID ;;
        esac
        case "$setprotoent_r_proto" in
        ''|0)   d_setprotoent_r=undef
@@ -16944,11 +17235,11 @@ case "$d_setpwent_r" in
        define)
        case "$setpwent_r_proto" in
        ''|0) try='int setpwent_r(FILE**);'
-       ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
+       ./protochk "$extern_C $try" $hdrs && setpwent_r_proto=I_H ;;
        esac
        case "$setpwent_r_proto" in
        ''|0) try='void setpwent_r(FILE**);'
-       ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
+       ./protochk "$extern_C $try" $hdrs && setpwent_r_proto=V_H ;;
        esac
        case "$setpwent_r_proto" in
        ''|0)   d_setpwent_r=undef
@@ -17013,11 +17304,11 @@ case "$d_setservent_r" in
        define)
        case "$setservent_r_proto" in
        ''|0) try='int setservent_r(int, struct servent_data*);'
-       ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
+       ./protochk "$extern_C $try" $hdrs && setservent_r_proto=I_ID ;;
        esac
        case "$setservent_r_proto" in
        ''|0) try='void setservent_r(int, struct servent_data*);'
-       ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
+       ./protochk "$extern_C $try" $hdrs && setservent_r_proto=V_ID ;;
        esac
        case "$setservent_r_proto" in
        ''|0)   d_setservent_r=undef
@@ -17457,7 +17748,6 @@ int main(int argc, char **argv) {
 EOP
 set try
 
-d_sprintf_returns_strlen="$undef"
 if eval $compile; then
     xxx="`$run ./try`"
     case "$?" in
@@ -17472,6 +17762,9 @@ EOM
        d_sprintf_returns_strlen="$undef"
         ;;
     esac
+else
+    echo "(I can't seem to compile the test program--assuming it doesn't)" >&4
+    d_sprintf_returns_strlen="$undef"
 fi
 $rm_try
 
@@ -17491,7 +17784,7 @@ case "$d_srand48_r" in
        define)
        case "$srand48_r_proto" in
        ''|0) try='int srand48_r(long, struct drand48_data*);'
-       ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
+       ./protochk "$extern_C $try" $hdrs && srand48_r_proto=I_LS ;;
        esac
        case "$srand48_r_proto" in
        ''|0)   d_srand48_r=undef
@@ -17532,7 +17825,7 @@ case "$d_srandom_r" in
        define)
        case "$srandom_r_proto" in
        ''|0) try='int srandom_r(unsigned int, struct random_data*);'
-       ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
+       ./protochk "$extern_C $try" $hdrs && srandom_r_proto=I_TS ;;
        esac
        case "$srandom_r_proto" in
        ''|0)   d_srandom_r=undef
@@ -17614,6 +17907,112 @@ case "$d_statfs_f_flags" in
 *)              echo "No, it doesn't." ;;
 esac
 
+: see what flavor, if any, of static inline is supported
+echo " "
+echo "Checking to see if your system supports static inline..."
+$cat > try.c <<'EOCP'
+#include <stdlib.h>
+extern int f_via_a(int x);
+extern int f_via_b(int x);
+int main(int argc, char **argv)
+{
+    int y;
+
+    y = f_via_a(0);
+#ifdef USE_B
+    y = f_via_b(0);
+#endif
+    if (y == 42) {
+        return EXIT_SUCCESS;
+    }
+    else {
+        return EXIT_FAILURE;
+    }
+}
+EOCP
+$cat > a.c <<'EOCP'
+static INLINE int f(int x) {
+    int y;
+    y = x + 42;
+    return y;
+}
+
+int f_via_a(int x)
+{
+    return f(x);
+}
+EOCP
+$cat > b.c <<'EOCP'
+extern int f(int x);
+
+int f_via_b(int x)
+{
+    return f(x);
+}
+EOCP
+
+# Respect a hint (or previous) value for perl_static_inline, if there is one.
+case "$perl_static_inline" in
+'')    # Check the various possibilities, and break out on success.
+       # For gcc, prefer __inline__, which will still permit 
+       # cflags.SH to add in -ansi.
+       case "$gccversion" in
+               '') xxx="inline __inline__ __inline _inline";;
+               *)  xxx="__inline__ inline __inline _inline";;
+       esac
+       for inline in $xxx; do
+               set try -DINLINE=$inline a.c
+               if eval $compile && $run ./try; then
+                       # Now make sure there is no external linkage of static
+                       # functions
+                       set try -DINLINE=$inline -DUSE_B a.c b.c
+                       if eval $compile && $run ./try; then
+                               $echo "Your compiler supports static $inline, " >&4
+                               $echo "but it also creates an external definition," >&4
+                               $echo "so I won't use it." >&4
+                               val=$undef
+                       else
+                               $echo "Your compiler supports static $inline." >&4
+                               val=$define
+                               perl_static_inline="static $inline";
+                               break;
+                       fi
+               else
+                       $echo "Your compiler does NOT support static $inline." >&4
+                       val="$undef"
+               fi
+       done
+       ;;
+*inline*) # Some variant of inline exists.
+       echo "Keeping your $hint value of $perl_static_inline."
+       val=$define
+       ;;
+static)  # No inline capabilities
+       echo "Keeping your $hint value of $perl_static_inline."
+       val=$undef
+       ;;
+*)  # Unrecognized previous value -- blindly trust the supplied
+       # value and hope it makes sense.  Use old value for
+       # d_static_inline, if there is one.
+       echo "Keeping your $hint value of $perl_static_inline."
+       case "$d_static_inline" in
+               '') val=$define ;;
+               *)  val=$d_static_inline ;;
+       esac
+       ;;
+esac
+# Fallback to plain 'static' if nothing worked.
+case "$perl_static_inline" in
+'')
+       perl_static_inline="static"
+       val=$undef
+       ;;
+esac
+set d_static_inline
+eval $setvar
+$rm -f a.[co] b.[co]
+$rm_try
+
 : Check stream access
 $cat >&4 <<EOM
 Checking how to access stdio streams by file descriptor number...
@@ -17733,15 +18132,15 @@ case "$d_strerror_r" in
        define)
        case "$strerror_r_proto" in
        ''|0) try='int strerror_r(int, char*, size_t);'
-       ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
+       ./protochk "$extern_C $try" $hdrs && strerror_r_proto=I_IBW ;;
        esac
        case "$strerror_r_proto" in
        ''|0) try='int strerror_r(int, char*, int);'
-       ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
+       ./protochk "$extern_C $try" $hdrs && strerror_r_proto=I_IBI ;;
        esac
        case "$strerror_r_proto" in
        ''|0) try='char* strerror_r(int, char*, size_t);'
-       ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
+       ./protochk "$extern_C $try" $hdrs && strerror_r_proto=B_IBW ;;
        esac
        case "$strerror_r_proto" in
        ''|0)   d_strerror_r=undef
@@ -18101,6 +18500,10 @@ if test "X$d_time" = X -o X"$timetype" = X; then
     eval $setvar
 fi
 
+: see if timegm exists
+set timegm d_timegm
+eval $inlibc
+
 : see if this is a sys/times.h system
 set sys/times.h i_systimes
 eval $inhdr
@@ -18139,7 +18542,7 @@ case "$d_tmpnam_r" in
        define)
        case "$tmpnam_r_proto" in
        ''|0) try='char* tmpnam_r(char*);'
-       ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
+       ./protochk "$extern_C $try" $hdrs && tmpnam_r_proto=B_B ;;
        esac
        case "$tmpnam_r_proto" in
        ''|0)   d_tmpnam_r=undef
@@ -18184,15 +18587,15 @@ case "$d_ttyname_r" in
        define)
        case "$ttyname_r_proto" in
        ''|0) try='int ttyname_r(int, char*, size_t);'
-       ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
+       ./protochk "$extern_C $try" $hdrs && ttyname_r_proto=I_IBW ;;
        esac
        case "$ttyname_r_proto" in
        ''|0) try='int ttyname_r(int, char*, int);'
-       ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
+       ./protochk "$extern_C $try" $hdrs && ttyname_r_proto=I_IBI ;;
        esac
        case "$ttyname_r_proto" in
        ''|0) try='char* ttyname_r(int, char*, int);'
-       ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
+       ./protochk "$extern_C $try" $hdrs && ttyname_r_proto=B_IBI ;;
        esac
        case "$ttyname_r_proto" in
        ''|0)   d_ttyname_r=undef
@@ -18320,7 +18723,7 @@ EOM
        ;;
 esac
 
-: Checking 32bit aligndness
+: Checking 32bit alignedness
 $cat <<EOM
 
 Checking to see whether you can access character data unalignedly...
@@ -18341,8 +18744,8 @@ $signal_t bletch(int s) { exit(4); }
 #endif
 int main() {
 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
-    U8 buf[8];
-    U32 *up;
+    volatile U8 buf[8];
+    volatile U32 *up;
     int i;
 
     if (sizeof(U32) != 4) {
@@ -18598,6 +19001,56 @@ esac
 : set the base revision
 baserev=5.0
 
+: length of character in bytes. Is always 1, otherwise it isnt C
+: This used to be a test using sizeof
+charsize=1
+
+: Check for the number of bits in a character
+case "$charbits" in
+'')    echo "Checking how long a character is (in bits)..." >&4
+       $cat >try.c <<EOCP
+#include <stdio.h>
+int main ()
+{
+    int n;
+    unsigned char c;
+    for (c = 1, n = 0; c; c <<= 1, n++) ;
+    printf ("%d\n", n);
+    return (0);
+    }
+EOCP
+       set try
+       if eval $compile_ok; then
+               dflt=`$run ./try`
+       else
+               dflt='8'
+               echo "(I can't seem to compile the test program.  Guessing...)"
+       fi
+       ;;
+*)
+       dflt="$charbits"
+       ;;
+esac
+rp="What is the length of a character (in bits)?"
+. ./myread
+charbits="$ans"
+$rm_try
+case "$charbits" in
+8)     ;;
+*)     cat >&4 << EOM
+Your system has an unsigned character size of $charbits bits, which
+is rather unusual (normally it is 8 bits).  Perl likely will not work
+correctly on your system, with subtle bugs in various places.
+EOM
+       rp='Do you really want to continue?'
+       dflt='n'
+       . ./myread
+       case "$ans" in
+               [yY])   echo >&4 "Okay, continuing."    ;;
+               *)      exit 1                          ;;
+       esac
+esac
+
 : how do we concatenate cpp tokens here?
 echo " "
 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
@@ -19093,7 +19546,7 @@ EOM
                        fi
                fi
        fi
-       $rm_try
+       $rm -f core try.core core.try.*
        case "$fflushNULL" in
        x)      $cat >&4 <<EOM
 Your fflush(NULL) works okay for output streams.
@@ -19800,7 +20253,7 @@ EOM
                for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
                        for yyy in size_t long int; do
                                case "$netdb_host_type" in
-                               '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
+                               '')     try="$extern_C struct hostent *gethostbyaddr($xxx, $yyy, int);"
                                        if ./protochk "$try" $hdrs; then
                                                echo "Your system accepts $xxx for the first arg."
                                                echo "...and $yyy for the second arg."
@@ -19849,7 +20302,7 @@ EOM
                        $i_unistd unistd.h"
                for xxx in "const char *" "char *"; do
                        case "$netdb_name_type" in
-                       '')     try="extern struct hostent *gethostbyname($xxx);"
+                       '')     try="$extern_C struct hostent *gethostbyname($xxx);"
                                if ./protochk "$try" $hdrs; then
                                        echo "Your system accepts $xxx."
                                        netdb_name_type="$xxx"
@@ -19887,7 +20340,7 @@ EOM
                        $i_unistd unistd.h"
                for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
                        case "$netdb_net_type" in
-                       '')     try="extern struct netent *getnetbyaddr($xxx, int);"
+                       '')     try="$extern_C struct netent *getnetbyaddr($xxx, int);"
                                if ./protochk "$try" $hdrs; then
                                        echo "Your system accepts $xxx."
                                        netdb_net_type="$xxx"
@@ -19931,9 +20384,6 @@ case "$pager" in
        esac
        ;;
 *)     dflt="$pager"
-       : Instruct ./getfile to trust the hinted or previous pager value,
-       : even if it does not begin with a slash.  For example, on os2,
-       : pager might be cmd /c more.  See comments in UU/getfile.
        fn="f/($pager)"
        ;;
 esac
@@ -20002,6 +20452,176 @@ else
 fi
 $rm -f foo* bar*
 
+: see if this is a values.h system
+set values.h i_values
+eval $inhdr
+
+: Check the max offset that gmtime and localtime accept
+echo "Checking max offsets that gmtime () accepts"
+
+case $i_values in
+    define) yyy="#include <values.h>" ;;
+    *)      yyy="" ;;
+    esac
+
+case "$sGMTIME_min/$sGMTIME_max" in
+    0/0|/)
+       $cat >try.c <<EOCP
+#include <sys/types.h>
+#include <stdio.h>
+#include <time.h>
+$yyy
+
+int i;
+struct tm *tmp;
+time_t pt;
+
+void gm_check (time_t t, int min_year, int max_year)
+{
+    tmp = gmtime (&t);
+    if ( tmp == NULL ||
+       /* Check tm_year overflow */
+        tmp->tm_year < min_year || tmp->tm_year > max_year)
+       tmp = NULL;
+    else
+       pt = t;
+    } /* gm_check */
+
+int check_max ()
+{
+    tmp = NULL;
+    pt  = 0;
+#ifdef MAXLONG
+    gm_check (MAXLONG, 69, 0x7fffffff);
+#endif
+    if (tmp == NULL || tmp->tm_year < 0) {
+       for (i = 63; i >= 0; i--) {
+           time_t x = pt | ((time_t)1 << i);
+           if (x < 0 || x < pt) continue;
+           gm_check (x, 69, 0x7fffffff);
+           }
+       }
+    printf ("sGMTIME_max=%ld\n", pt);
+    return (0);
+    } /* check_max */
+
+int check_min ()
+{
+    tmp = NULL;
+    pt  = 0;
+#ifdef MINLONG
+    gm_check (MINLONG, -1900, 70);
+#endif
+    if (tmp == NULL) {
+       for (i = 36; i >= 0; i--) {
+           time_t x = pt - ((time_t)1 << i);
+           if (x > 0) continue;
+           gm_check (x, -1900, 70);
+           }
+       }
+    printf ("sGMTIME_min=%ld\n", pt);
+    return (0);
+    } /* check_min */
+
+int main (int argc, char *argv[])
+{
+    fprintf (stderr, "Sizeof time_t = %ld\n", sizeof (time_t));
+    check_max ();
+    check_min ();
+    return (0);
+    } /* main */
+EOCP
+       set try
+       if eval $compile; then
+           eval `$run ./try`
+       else
+           echo "Cannot determine sGMTIME_max and sGMTIME_min." >&4
+           fi
+       $rm_try
+       ;;
+    esac
+
+echo "Checking max offsets that localtime () accepts"
+
+case "$sLOCALTIME_min/$sLOCALTIME_max" in
+    0/0|/)
+       $cat >try.c <<EOCP
+#include <sys/types.h>
+#include <stdio.h>
+#include <time.h>
+$yyy
+
+int i;
+struct tm *tmp;
+time_t pt;
+
+void local_check (time_t t, int min_year, int max_year)
+{
+    if (sizeof (time_t) > 4 && t > 0x7ffffffffffff000LL)
+       tmp = NULL;
+    else
+       tmp = localtime (&t);
+    if ( tmp == NULL ||
+       /* Check tm_year overflow */
+        tmp->tm_year < min_year || tmp->tm_year > max_year)
+       tmp = NULL;
+    else
+       pt = t;
+    } /* local_check */
+
+int check_max ()
+{
+    tmp = NULL;
+    pt  = 0;
+#ifdef MAXLONG
+    local_check (MAXLONG, 69, 0x7fffffff);
+#endif
+    if (tmp == NULL || tmp->tm_year < 0) {
+       for (i = 63; i >= 0; i--) {
+           time_t x = pt | ((time_t)1 << i);
+           if (x < 0 || x < pt) continue;
+           local_check (x, 69, 0x7fffffff);
+           }
+       }
+    printf ("sLOCALTIME_max=%ld\n", pt);
+    return (0);
+   } /* check_max */
+
+int check_min ()
+{
+    tmp = NULL;
+    pt  = 0;
+#ifdef MINLONG
+    local_check (MINLONG, -1900, 70);
+#endif
+    if (tmp == NULL) {
+       for (i = 36; i >= 0; i--) {
+           time_t x = pt - ((time_t)1 << i);
+           if (x > 0) continue;
+           local_check (x, -1900, 70);
+           }
+       }
+    printf ("sLOCALTIME_min=%ld\n", pt);
+    return (0);
+    } /* check_min */
+
+int main (int argc, char *argv[])
+{
+    check_max ();
+    check_min ();
+    return (0);
+    } /* main */
+EOCP
+       set try
+       if eval $compile; then
+           eval `$run ./try`
+       else
+           echo "Cannot determine sLOCALTIME_max and sLOCALTIME_min." >&4
+           fi
+       $rm_try
+       ;;
+    esac
+
 : check for type of arguments to select.
 case "$selecttype" in
 '') case "$d_select" in
@@ -20023,7 +20643,7 @@ EOM
                        for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
                                for tmo in 'struct timeval *' 'const struct timeval *'; do
                                        case "$val" in
-                                       '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
+                                       '')     try="$extern_C select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
                                                if ./protochk "$try" $hdrs; then
                                                        echo "Your system accepts $xxx."
                                                        val="$xxx"
@@ -20504,7 +21124,7 @@ EOM
        yyy="$yyy $sizetype int long unsigned"
        for xxx in $yyy; do
                case "$socksizetype" in
-               '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
+               '')     try="$extern_C int accept(int, struct sockaddr *, $xxx *);"
                        case "$usesocks" in
                        "$define")
                                if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
@@ -20582,8 +21202,7 @@ $rm_try
 
 : see what type of char stdio uses.
 echo " "
-echo '#include <stdio.h>' > stdio.c
-$cppstdin $cppminus < stdio.c > stdioh
+echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
        echo "Your stdio uses unsigned chars." >&4
        stdchar="unsigned char"
@@ -20591,7 +21210,7 @@ else
        echo "Your stdio uses signed chars." >&4
        stdchar="char"
 fi
-$rm -f stdio.* stdioh
+$rm -f stdioh
 
 : see what type uids are declared as in the kernel
 echo " "
@@ -20739,6 +21358,21 @@ case "$usesitecustomize" in
        ;;
     esac
 
+: see if prototypes support variable argument declarations
+echo " "
+case "$prototype$i_stdarg" in
+$define$define)
+       echo "It appears we'll be able to prototype varargs functions." >&4
+       val="$define"
+       ;;
+*)
+       echo "Too bad... We won't be using prototyped varargs functions..." >&4
+       val="$undef"
+       ;;
+esac
+set vaproto
+eval $setvar
+
 : determine compiler compiler
 case "$yacc" in
 '')
@@ -20802,35 +21436,6 @@ val="$t_gdbm"
 set i_gdbm
 eval $setvar
 
-: see if ndbm.h is available
-set ndbm.h i_ndbm
-eval $inhdr
-: Compatibility location for RedHat 7.1
-set gdbm/ndbm.h i_gdbmndbm
-eval $inhdr
-: Compatibility location for Debian 4.0
-set gdbm-ndbm.h i_gdbm_ndbm
-eval $inhdr
-
-if $test "$i_ndbm" = "$define" -o "$i_gdbmndbm" = "$define" -o "$i_gdbm_ndbm" = "$define"; then
-       : see if dbm_open exists
-       set dbm_open d_dbm_open
-       eval $inlibc
-       case "$d_dbm_open" in
-       $undef)
-               i_ndbm="$undef"
-               i_gdbmndbm="$undef"
-               i_gdbm_ndbm="$undef"
-               echo "We won't be including <ndbm.h>"
-           val="$undef"
-               ;;
-       *) val="$define"
-          ;;
-       esac
-fi
-set d_ndbm
-eval $setvar
-
 : see if this is a ieeefp.h system
 case "$i_ieeefp" in
 '' ) set ieeefp.h i_ieeefp
@@ -21030,11 +21635,11 @@ $eunicefix Cppsym.try
 ./Cppsym < Cppsym.know > Cppsym.true
 : Add in any linux cpp "predefined macros":
 case "$osname::$gccversion" in
-  *linux*::*.*)
+  *linux*::*.*|*gnukfreebsd*::*.*|gnu::*.*)
     tHdrH=_tmpHdr
     rm -f $tHdrH'.h' $tHdrH
     touch $tHdrH'.h'
-    if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
+    if $cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
        sed 's/#define[\ \  ]*//;s/[\ \     ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
        if [ -s $tHdrH'_cppsym.real' ]; then
          cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
@@ -21265,10 +21870,6 @@ eval $inhdr
 set utime.h i_utime
 eval $inhdr
 
-: see if this is a values.h system
-set values.h i_values
-eval $inhdr
-
 : see if this is a vfork system
 case "$d_vfork" in
 "$define")
@@ -21294,44 +21895,72 @@ nonxs_extensions=''
 
 : Function to recursively find available extensions, ignoring DynaLoader
 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
+: In 5.10.1 and later, extensions are stored in directories
+: like File-Glob instead of the older File/Glob/.
 find_extensions='
     for xxx in *; do
        case "$xxx" in
            DynaLoader|dynaload) ;;
            *)
-           if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then
-               known_extensions="$known_extensions $1$xxx";
-           elif $test -f $xxx/Makefile.PL; then
-               nonxs_extensions="$nonxs_extensions $1$xxx";
+           this_ext=`echo $xxx | $sed -e s/-/\\\//g`;
+           leaf=`echo $xxx | $sed -e s/.*-//`;
+           if $test -d File; then
+               if $test -f $xxx/$leaf.xs -o -f $xxx/$leaf.c; then
+                   known_extensions="$known_extensions $1$this_ext";
+               elif $test -f $xxx/Makefile.PL; then
+                   nonxs_extensions="$nonxs_extensions $1$this_ext";
+               else
+                   if $test -d $xxx -a $# -lt 10; then
+                       set $1$xxx/ $*;
+                       cd "$xxx";
+                       eval $find_extensions;
+                       cd ..;
+                       shift;
+                   fi;
+               fi;
            else
-               if $test -d $xxx -a $# -lt 10; then
-                   set $1$xxx/ $*;
-                   cd "$xxx";
-                   eval $find_extensions;
-                   cd ..;
-                   shift;
+               $ls -1 $xxx > $$.tmp;
+               if   $contains "\.xs$" $$.tmp > /dev/null 2>&1; then
+                   known_extensions="$known_extensions $this_ext";
+               elif $contains "\.c$"  $$.tmp > /dev/null 2>&1; then
+                   known_extensions="$known_extensions $this_ext";
+               elif $test -d $xxx; then
+                   nonxs_extensions="$nonxs_extensions $this_ext";
                fi;
+               $rm -f $$.tmp;
            fi
            ;;
        esac;
     done'
 tdir=`pwd`
+cd "$rsrc/cpan"
+set X
+shift
+eval $find_extensions
+cd "$rsrc/dist"
+set X
+shift
+eval $find_extensions
 cd "$rsrc/ext"
 set X
 shift
 eval $find_extensions
-# Special case:  Add in modules that nest beyond the first level.
-# Currently threads/shared and Hash/Util/FieldHash, since they are
-# not picked up by the recursive find above (and adding in general
-# recursive finding breaks SDBM_File/sdbm).
-# A.D. 20011025 (SDBM), ajgough 20071008 (FieldHash)
-known_extensions="$known_extensions threads/shared Hash/Util/FieldHash"
+if $test -d File-Glob; then
+    : All ext/ flattened
+else
+    # Special case:  Add in modules that nest beyond the first level.
+    # Currently threads/shared and Hash/Util/FieldHash, since they are
+    # not picked up by the recursive find above (and adding in general
+    # recursive finding breaks SDBM_File/sdbm).
+    # A.D. 20011025 (SDBM), ajgough 20071008 (FieldHash)
+    known_extensions="$known_extensions threads/shared Hash/Util/FieldHash"
+fi
 set X $known_extensions
 shift
-known_extensions="$*"
+known_extensions=`echo "$*" | tr ' ' $trnl | $sort | tr $trnl ' '`
 set X $nonxs_extensions
 shift
-nonxs_extensions="$*"
+nonxs_extensions=`echo "$*" | tr ' ' $trnl | $sort | tr $trnl ' '`
 cd "$tdir"
 
 : Now see which are supported on this system.
@@ -21360,7 +21989,7 @@ for xxx in $known_extensions ; do
                esac
                ;;
        NDBM_File|ndbm_fil)
-               case "$i_ndbm" in
+               case "$d_ndbm" in
                $define)
                    case "$osname-$use64bitint" in
                    hpux-define)
@@ -21439,6 +22068,8 @@ for xxx in $known_extensions ; do
                # --jhi
                avail_ext="$avail_ext $xxx"
                ;;
+       VMS*)
+               ;;
        Win32*)
                case "$osname" in
                cygwin) avail_ext="$avail_ext $xxx" ;;
@@ -21469,7 +22100,7 @@ avail_ext="$*"
 case "$onlyextensions" in
 '') ;;
 *)  keepextensions=''
-    echo "You have requested that only certains extensions be included..." >&4
+    echo "You have requested that only certain extensions be included..." >&4
     for i in $onlyextensions; do
         case " $avail_ext " in
         *" $i "*)
@@ -21639,7 +22270,7 @@ esac
 # the appropriate Makefile.PL.
 case " $static_ext " in
        *" Encode "*) # Add the subextensions of Encode
-       cd "$rsrc/ext"
+       cd "$rsrc/cpan"
        for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
                static_ext="$static_ext Encode/$xxx"
        done
@@ -21761,7 +22392,9 @@ $startsh
 # Target system     : $myuname
 
 EOT
+: Add in command line options if available
 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
+
 $spitshell <<EOT >>config.sh
 
 Author='$Author'
@@ -21797,6 +22430,7 @@ awk='$awk'
 baserev='$baserev'
 bash='$bash'
 bin='$bin'
+bin_ELF='$bin_ELF'
 binexp='$binexp'
 bison='$bison'
 byacc='$byacc'
@@ -21815,6 +22449,8 @@ ccversion='$ccversion'
 cf_by='$cf_by'
 cf_email='$cf_email'
 cf_time='$cf_time'
+charbits='$charbits'
+charsize='$charsize'
 chgrp='$chgrp'
 chmod='$chmod'
 chown='$chown'
@@ -21858,9 +22494,11 @@ d_accessx='$d_accessx'
 d_aintl='$d_aintl'
 d_alarm='$d_alarm'
 d_archlib='$d_archlib'
+d_asctime64='$d_asctime64'
 d_asctime_r='$d_asctime_r'
 d_atolf='$d_atolf'
 d_atoll='$d_atoll'
+d_attribute_deprecated='$d_attribute_deprecated'
 d_attribute_format='$d_attribute_format'
 d_attribute_malloc='$d_attribute_malloc'
 d_attribute_nonnull='$d_attribute_nonnull'
@@ -21895,10 +22533,12 @@ d_crypt_r='$d_crypt_r'
 d_csh='$d_csh'
 d_ctermid='$d_ctermid'
 d_ctermid_r='$d_ctermid_r'
+d_ctime64='$d_ctime64'
 d_ctime_r='$d_ctime_r'
 d_cuserid='$d_cuserid'
 d_dbl_dig='$d_dbl_dig'
 d_dbminitproto='$d_dbminitproto'
+d_difftime64='$d_difftime64'
 d_difftime='$d_difftime'
 d_dir_dd_fd='$d_dir_dd_fd'
 d_dirfd='$d_dirfd'
@@ -21957,6 +22597,9 @@ d_fsync='$d_fsync'
 d_ftello='$d_ftello'
 d_ftime='$d_ftime'
 d_futimes='$d_futimes'
+d_gdbm_ndbm_h_uses_prototypes='$d_gdbm_ndbm_h_uses_prototypes'
+d_gdbmndbm_h_uses_prototypes='$d_gdbmndbm_h_uses_prototypes'
+d_getaddrinfo='$d_getaddrinfo'
 d_getcwd='$d_getcwd'
 d_getespwnam='$d_getespwnam'
 d_getfsstat='$d_getfsstat'
@@ -21978,6 +22621,7 @@ d_getlogin='$d_getlogin'
 d_getlogin_r='$d_getlogin_r'
 d_getmnt='$d_getmnt'
 d_getmntent='$d_getmntent'
+d_getnameinfo='$d_getnameinfo'
 d_getnbyaddr='$d_getnbyaddr'
 d_getnbyname='$d_getnbyname'
 d_getnent='$d_getnent'
@@ -22013,6 +22657,7 @@ d_getservprotos='$d_getservprotos'
 d_getspnam='$d_getspnam'
 d_getspnam_r='$d_getspnam_r'
 d_gettimeod='$d_gettimeod'
+d_gmtime64='$d_gmtime64'
 d_gmtime_r='$d_gmtime_r'
 d_gnulibc='$d_gnulibc'
 d_grpasswd='$d_grpasswd'
@@ -22022,6 +22667,8 @@ d_ilogbl='$d_ilogbl'
 d_inc_version_list='$d_inc_version_list'
 d_index='$d_index'
 d_inetaton='$d_inetaton'
+d_inetntop='$d_inetntop'
+d_inetpton='$d_inetpton'
 d_int64_t='$d_int64_t'
 d_isascii='$d_isascii'
 d_isfinite='$d_isfinite'
@@ -22033,6 +22680,7 @@ d_lchown='$d_lchown'
 d_ldbl_dig='$d_ldbl_dig'
 d_libm_lib_version='$d_libm_lib_version'
 d_link='$d_link'
+d_localtime64='$d_localtime64'
 d_localtime_r='$d_localtime_r'
 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
 d_locconv='$d_locconv'
@@ -22057,6 +22705,7 @@ d_mkdtemp='$d_mkdtemp'
 d_mkfifo='$d_mkfifo'
 d_mkstemp='$d_mkstemp'
 d_mkstemps='$d_mkstemps'
+d_mktime64='$d_mktime64'
 d_mktime='$d_mktime'
 d_mmap='$d_mmap'
 d_modfl='$d_modfl'
@@ -22078,6 +22727,7 @@ d_msync='$d_msync'
 d_munmap='$d_munmap'
 d_mymalloc='$d_mymalloc'
 d_ndbm='$d_ndbm'
+d_ndbm_h_uses_prototypes='$d_ndbm_h_uses_prototypes'
 d_nice='$d_nice'
 d_nl_langinfo='$d_nl_langinfo'
 d_nv_preserves_uv='$d_nv_preserves_uv'
@@ -22094,6 +22744,8 @@ d_phostname='$d_phostname'
 d_pipe='$d_pipe'
 d_poll='$d_poll'
 d_portable='$d_portable'
+d_prctl='$d_prctl'
+d_prctl_set_name='$d_prctl_set_name'
 d_printf_format_null='$d_printf_format_null'
 d_procselfexe='$d_procselfexe'
 d_pseudofork='$d_pseudofork'
@@ -22179,8 +22831,10 @@ d_sigaction='$d_sigaction'
 d_signbit='$d_signbit'
 d_sigprocmask='$d_sigprocmask'
 d_sigsetjmp='$d_sigsetjmp'
+d_sin6_scope_id='$d_sin6_scope_id'
 d_sitearch='$d_sitearch'
 d_snprintf='$d_snprintf'
+d_sockaddr_sa_len='$d_sockaddr_sa_len'
 d_sockatmark='$d_sockatmark'
 d_sockatmarkproto='$d_sockatmarkproto'
 d_socket='$d_socket'
@@ -22196,6 +22850,7 @@ d_sresuproto='$d_sresuproto'
 d_statblks='$d_statblks'
 d_statfs_f_flags='$d_statfs_f_flags'
 d_statfs_s='$d_statfs_s'
+d_static_inline='$d_static_inline'
 d_statvfs='$d_statvfs'
 d_stdio_cnt_lval='$d_stdio_cnt_lval'
 d_stdio_ptr_lval='$d_stdio_ptr_lval'
@@ -22235,6 +22890,7 @@ d_tcsetpgrp='$d_tcsetpgrp'
 d_telldir='$d_telldir'
 d_telldirproto='$d_telldirproto'
 d_time='$d_time'
+d_timegm='$d_timegm'
 d_times='$d_times'
 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
 d_tm_tm_zone='$d_tm_tm_zone'
@@ -22299,6 +22955,7 @@ eunicefix='$eunicefix'
 exe_ext='$exe_ext'
 expr='$expr'
 extensions='$extensions'
+extern_C='$extern_C'
 extras='$extras'
 fflushNULL='$fflushNULL'
 fflushall='$fflushall'
@@ -22590,6 +23247,7 @@ path_sep='$path_sep'
 perl5='$perl5'
 perl='$perl'
 perl_patchlevel='$perl_patchlevel'
+perl_static_inline='$perl_static_inline'
 perladmin='$perladmin'
 perllibs='$perllibs'
 perlpath='$perlpath'
@@ -22622,6 +23280,10 @@ rm_try='$rm_try'
 rmail='$rmail'
 run='$run'
 runnm='$runnm'
+sGMTIME_max='$sGMTIME_max'
+sGMTIME_min='$sGMTIME_min'
+sLOCALTIME_max='$sLOCALTIME_max'
+sLOCALTIME_min='$sLOCALTIME_min'
 sPRIEUldbl='$sPRIEUldbl'
 sPRIFUldbl='$sPRIFUldbl'
 sPRIGUldbl='$sPRIGUldbl'
@@ -22747,6 +23409,7 @@ use5005threads='$use5005threads'
 use64bitall='$use64bitall'
 use64bitint='$use64bitint'
 usecrosscompile='$usecrosscompile'
+usedevel='$usedevel'
 usedl='$usedl'
 usedtrace='$usedtrace'
 usefaststdio='$usefaststdio'
@@ -22778,6 +23441,7 @@ uvsize='$uvsize'
 uvtype='$uvtype'
 uvuformat='$uvuformat'
 uvxformat='$uvxformat'
+vaproto='$vaproto'
 vendorarch='$vendorarch'
 vendorarchexp='$vendorarchexp'
 vendorbin='$vendorbin'
@@ -22809,13 +23473,10 @@ zcat='$zcat'
 zip='$zip'
 EOT
 
-: Add in command line options if available
-$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
-
 : add special variables
 $test -f $src/patchlevel.h && \
 awk '/^#define[        ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
-echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
+echo "PERL_PATCHLEVEL='$perl_patchlevel'" >>config.sh
 echo "PERL_CONFIG_SH=true" >>config.sh
 
 : propagate old symbols