unsigned is a more reasonable socksizetype default (from
[p5sagit/p5-mst-13.2.git] / Configure
index 5724a60..f4138e6 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Sun Mar  5 23:53:58 EET 2000 [metaconfig 3.0 PL70]
+# Generated on Sat Mar 18 23:12:11 EET 2000 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.com)
 
 cat >/tmp/c1$$ <<EOF
@@ -868,6 +868,7 @@ sitelib_stem=''
 sitelibexp=''
 siteprefix=''
 siteprefixexp=''
+sizesize=''
 sizetype=''
 so=''
 socksizetype=''
@@ -3311,13 +3312,15 @@ while test "$type"; do
                        Directory)
                                for fp in $gfpth; do
                                        if test "X$fp" = X.; then
-                                           pf="$ansexp"
+                                           dir="$ans"
+                                           direxp="$ansexp"
                                        else    
-                                           pf="$fp/$ansexp"
+                                           dir="$fp/$ans"
+                                           direxp="$fp/$ansexp"
                                        fi
-                                       if test -d "$pf"; then
+                                       if test -d "$direxp"; then
                                                type=''
-                                               value="$pf"
+                                               value="$dir"
                                                break
                                        fi
                                done
@@ -4512,6 +4515,14 @@ esac
 set use64bitint
 eval $setvar
 
+case "$use64bitall" in
+"$define"|true|[yY]*) dflt='y' ;;
+*) case "$longsize" in
+   8) dflt='y' ;;
+   *) dflt='n' ;;
+   esac
+   ;;
+esac   
 cat <<EOM
 
 You may also choose to try maximal 64-bitness.  It means using as much
@@ -4522,14 +4533,6 @@ have any more 64-bitness available than what you already have chosen.
 If this doesn't make any sense to you, just accept the default '$dflt'.
 EOM
 rp='Try to use maximal 64-bit support, if available?'
-case "$use64bitall" in
-"$define"|true|[yY]*) dflt='y' ;;
-*) case "$longsize" in
-   8) dflt='y' ;;
-   *) dflt='n' ;;
-   esac
-   ;;
-esac   
 . ./myread
 case "$ans" in
 [yY]*) val="$define" ;;
@@ -4914,9 +4917,9 @@ case "$usethreads$usemultiplicity" in
        ;;
 *)     $cat <<EOM
 
-Perl 5.006 can be compiled for binary compatibility with 5.005.
-If you decide to do so, you will be able to continue using most
-of the extensions that were compiled for Perl 5.005.
+This version of Perl can be compiled for binary compatibility with 5.005.
+If you decide to do so, you will be able to continue using most of the
+extensions that were compiled for Perl 5.005.
 
 EOM
        case "$bincompat5005$d_bincompat5005" in
@@ -6616,46 +6619,26 @@ esac
 
 : see if we can have long filenames
 echo " "
-rmlist="$rmlist /tmp/cf$$"
-$test -d /tmp/cf$$ || mkdir /tmp/cf$$
 first=123456789abcdef
-second=/tmp/cf$$/$first
-$rm -f $first $second
+$rm -f $first
 if (echo hi >$first) 2>/dev/null; then
        if $test -f 123456789abcde; then
                echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
                val="$undef"
        else
-               if (echo hi >$second) 2>/dev/null; then
-                       if $test -f /tmp/cf$$/123456789abcde; then
-                               $cat <<'EOM'
-That's peculiar... You can have filenames longer than 14 characters, but only
-on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
-I shall consider your system cannot support long filenames at all.
-EOM
-                               val="$undef"
-                       else
-                               echo 'You can have filenames longer than 14 characters.' >&4
-                               val="$define"
-                       fi
-               else
-                       $cat <<'EOM'
-How confusing! Some of your filesystems are sane enough to allow filenames
-longer than 14 characters but some others like /tmp can't even think about them.
-So, for now on, I shall assume your kernel does not allow them at all.
-EOM
-                       val="$undef"
-               fi
+               echo 'You can have filenames longer than 14 characters.'>&4
+               val="$define"
        fi
 else
        $cat <<'EOM'
-You can't have filenames longer than 14 chars.  You can't even think about them!
+You can't have filenames longer than 14 chars.
+You can't even think about them!
 EOM
        val="$undef"
 fi 
 set d_flexfnam
 eval $setvar
-$rm -rf /tmp/cf$$ 123456789abcde*
+$rm -rf 123456789abcde*
 
 : determine where library module manual pages go
 set man3dir man3dir none
@@ -6688,7 +6671,7 @@ esac
 echo "If you don't want the manual sources installed, answer 'none'."
 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
 case "$man3dir" in
-'')    dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
+'')    dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
        if $test -d "$privlib/man/man3"; then
                cat <<EOM >&4
 
@@ -6706,16 +6689,18 @@ EOM
                esac
     fi
        ;;
-' ') dflt=none;;
 *)     dflt="$man3dir" ;;
 esac
+case "$dflt" in
+' ') dflt=none ;;
+esac
 echo " "
 fn=dn+~
 rp="Where do the $package library man pages (source) go?"
 . ./getfile
 man3dir="$ans"
 man3direxp="$ansexp"
-case "$man1dir" in
+case "$man3dir" in
 '')    man3dir=' '
        installman3dir='';;
 esac
@@ -8636,7 +8621,8 @@ extern int errno;
 #ifdef I_UNISTD
 #include <unistd.h>
 #endif
-#ifdef $i_string
+#$i_string I_STRING
+#ifdef I_STRING
 #include <string.h>
 #else
 #include <strings.h>
@@ -12553,9 +12539,52 @@ EOM
        $rm -f core try.core core.try.*
        case "$fflushNULL" in
        x)      $cat >&4 <<EOM
-Your fflush(NULL) works okay.
+Your fflush(NULL) works okay for output streams.
+Let's see if it clobbers input pipes...
+EOM
+# As of mid-March 2000 all versions of Solaris appear to have a stdio
+# bug that improperly flushes the input end of pipes.  So we avoid the
+# autoflush on fork/system/exec support for now. :-(
+$cat >tryp.c <<EOCP
+#include <stdio.h>
+int
+main(int argc, char **argv)
+{
+    char buf[1024];
+    int i;
+    char *bp = buf;
+    while (1) {
+        while ((i = getc(stdin)) != -1
+               && (*bp++ = i) != '\n'
+               && bp < &buf[1024])
+       /* DO NOTHING */ ;
+        *bp = '\0';
+        fprintf(stdout, "%s", buf);
+        fflush(NULL);
+        if (i == -1)
+           return 0;
+        bp = buf;
+    }
+}
+EOCP
+                fflushNULL="$define"
+                set tryp
+                if eval $compile; then
+                    $rm -f tryp.out
+                    $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
+                    if cmp tryp.c tryp.out >/dev/null 2>&1; then
+                       $cat >&4 <<EOM
+fflush(NULL) seems to behave okay with input streams.
+EOM
+                       fflushNULL="$define"
+                    else
+                       $cat >&4 <<EOM
+Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
 EOM
-               fflushNULL="$define"
+                        fflushNULL="$undef"
+                    fi
+                fi
+               $rm -f core tryp.c tryp.core core.tryp.*
                ;;
        '')     $cat >&4 <<EOM
 Your fflush(NULL) isn't working (contrary to ANSI C).
@@ -12577,57 +12606,100 @@ $define|true|[yY]*)
        fflushNULL="$undef"
        ;;
 esac
-: check explicit looping only if NULL did not work
+: check explicit looping only if NULL did not work, and if the pipe
+: bug does not show up on an explicit flush too
 case "$fflushNULL" in
 "$undef")
-       : check for fflush all behaviour
-       case "$fflushall" in
-       '')     set try -DTRY_FFLUSH_ALL $output
-               if eval $compile; then
-                       $cat >&4 <<EOM
-(Now testing the other method--but note that also this may fail.)
+       $cat >tryp.c <<EOCP
+#include <stdio.h>
+int
+main(int argc, char **argv)
+{
+    char buf[1024];
+    int i;
+    char *bp = buf;
+    while (1) {
+       while ((i = getc(stdin)) != -1
+              && (*bp++ = i) != '\n'
+              && bp < &buf[1024])
+       /* DO NOTHING */ ;
+       *bp = '\0';
+       fprintf(stdout, "%s", buf);
+       fflush(stdin);
+       if (i == -1)
+           return 0;
+       bp = buf;
+    }
+}
+EOCP
+       set tryp
+       if eval $compile; then
+           $rm -f tryp.out
+           $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
+           if cmp tryp.c tryp.out >/dev/null 2>&1; then
+              $cat >&4 <<EOM
+Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
 EOM
-                       $rm -f try.out
-                       ./try$exe_ext 2>/dev/null
-                       if $test -s try.out -a "X$?" = X42; then
-                               fflushall="`$cat try.out`"
-                       fi
-               fi
-               $rm -f core try.core core.try.*
+               : now check for fflushall behaviour
                case "$fflushall" in
-               x)      $cat >&4 <<EOM
+               '')     set try -DTRY_FFLUSH_ALL $output
+                       if eval $compile; then
+                               $cat >&4 <<EOM
+(Now testing the other method--but note that this also may fail.)
+EOM
+                               $rm -f try.out
+                               ./try$exe_ext 2>/dev/null
+                               if $test -s try.out -a "X$?" = X42; then
+                                       fflushall="`$cat try.out`"
+                               fi
+                       fi
+                       $rm -f core try.core core.try.*
+                       case "$fflushall" in
+                       x)      $cat >&4 <<EOM
 Whew. Flushing explicitly all the stdio streams works.
 EOM
-                       fflushall="$define"
-                       ;;
-               '')     $cat >&4 <<EOM
+                               fflushall="$define"
+                               ;;
+                       '')     $cat >&4 <<EOM
 Sigh. Flushing explicitly all the stdio streams doesn't work.
 EOM
-                       fflushall="$undef"
-                       ;;
-               *)      $cat >&4 <<EOM
+                               fflushall="$undef"
+                               ;;
+                       *)      $cat >&4 <<EOM
 Cannot figure out whether flushing stdio streams explicitly works or not.
 I'm assuming it doesn't.
 EOM
+                               fflushall="$undef"
+                               ;;
+                       esac
+                       ;;
+               "$define"|true|[yY]*)
+                       fflushall="$define"
+                       ;;
+               *)
                        fflushall="$undef"
                        ;;
                esac
-               ;;
-       "$define"|true|[yY]*)
-               fflushall="$define"
-               ;;
-       *)
+           else
+               $cat >&4 <<EOM
+All is futile.  Even fflush(stdin) clobbers input pipes!
+EOM
                fflushall="$undef"
-               ;;
-       esac
+           fi
+       else
+           fflushall="$undef"
+       fi
+       $rm -f core tryp.c tryp.core core.tryp.*
        ;;
-*)     fflushall="$undef"      
+*)     fflushall="$undef"
        ;;
 esac
+
 case "$fflushNULL$fflushall" in
 undefundef)
        $cat <<EOM
-I cannot figure out how to flush pending stdio output.
+OK, I give up.  I cannot figure out how to flush pending stdio output.
+We won't be flushing handles at all before fork/exec/popen.
 EOM
        ;;
 esac
@@ -13719,6 +13791,37 @@ echo $sig_name | $awk \
 }'
 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
 
+echo " "
+case "$sizetype" in
+*_t) zzz="$sizetype"   ;;
+*)   zzz="filesize"    ;;
+esac
+echo "Checking the size of $zzz..." >&4 
+cat > try.c <<EOCP
+#include <sys/types.h>
+#include <stdio.h>
+int main() {
+    printf("%d\n", (int)sizeof($sizetype));
+    exit(0);
+}
+EOCP
+set try
+if eval $compile_ok; then
+       yyy=`./try`
+       case "$yyy" in
+       '')     sizesize=4
+               echo "(I can't execute the test program--guessing $sizesize.)" >&4
+               ;;
+       *)      sizesize=$yyy
+               echo "Your $zzz size is $sizesize bytes."
+               ;;
+       esac
+else
+       sizesize=4
+       echo "(I can't compile the test program--guessing $sizesize.)" >&4
+fi
+
+
 : check for socklen_t
 echo " "
 echo "Checking to see if you have socklen_t..." >&4
@@ -13738,7 +13841,7 @@ else
        val="$undef"
        echo "You do not have socklen_t."
        case "$sizetype" in
-       size_t) echo "(You do have size_t, that might work.)" ;;
+       size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
        esac
 fi
 $rm -f try try.*
@@ -13778,7 +13881,7 @@ EOM
        esac
        ;;
 *)     : no sockets, so pick relatively harmless defaults
-       socksizetype='char *'
+       socksizetype='unsigned'
        ;;
 esac
 
@@ -15605,6 +15708,7 @@ sitelib_stem='$sitelib_stem'
 sitelibexp='$sitelibexp'
 siteprefix='$siteprefix'
 siteprefixexp='$siteprefixexp'
+sizesize='$sizesize'
 sizetype='$sizetype'
 sleep='$sleep'
 smail='$smail'