Still fflushing.
Jarkko Hietaniemi [Fri, 14 May 1999 07:33:26 +0000 (07:33 +0000)]
p4raw-id: //depot/cfgperl@3420

Configure
config_h.SH
util.c

index 2735828..4a78ff7 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 Fri May 14 00:11:18 EET DST 1999 [metaconfig 3.0 PL70]
+# Generated on Fri May 14 10:24:50 EET DST 1999 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.com)
 
 cat >/tmp/c1$$ <<EOF
@@ -799,6 +799,7 @@ d_fsetpos64=''
 d_ftell64=''
 d_ftello64=''
 d_tmpfile64=''
+d_stdio_stream_array=''
 stdio_stream_array=''
 sysman=''
 trnl=''
@@ -9960,6 +9961,41 @@ esac
 set d_stdiobase
 eval $setvar
 
+$cat >&4 <<EOM
+Checking how to access stdio streams by file descriptor number...
+EOM
+case "$stdio_stream_array" in
+'')    $cat >try.c <<EOCP
+#include <stdio.h>
+int main() {
+  if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
+    printf("yes\n");
+}
+EOCP
+       for s in _iob __iob __sF
+       do
+               set try -DSTDIO_STREAM_ARRAY=$s
+               if eval $compile; then
+                       case "`./try$exe_ext`" in
+                       yes)    stdio_stream_array=$s; break ;;
+                       esac
+               fi
+       done
+       $rm -f try.* try$exe_ext
+esac
+case "$stdio_stream_array" in
+'')    $cat >&4 <<EOM
+I can't figure out how to access stdio streams by file descriptor number.
+EOM
+       d_stdio_stream_array="$undef"
+       ;;
+*)     $cat >&4 <<EOM
+You can access stdio streams by file descriptor number by the $stdio_stream_array array.
+EOM
+       d_stdio_stream_array="$define"
+       ;;
+esac
+
 : see if strcoll exists
 set strcoll d_strcoll
 eval $inlibc
@@ -10926,39 +10962,6 @@ $rm -f tebcdic.c tebcdic
 set ebcdic
 eval $setvar
 
-$cat >&4 <<EOM
-Checking how to access stdio streams by file descriptor number...
-EOM
-case "$stdio_stream_array" in
-'')    $cat >try.c <<EOCP
-#include <stdio.h>
-int main() {
-  if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
-    printf("yes\n");
-}
-EOCP
-       for s in _iob __iob __sF
-       do
-               set try -DSTDIO_STREAM_ARRAY=$s
-               if eval $compile_ok; then
-                       case "`./try$exe_ext`" in
-                       yes)    stdio_stream_array=$s; break ;;
-                       esac
-               fi
-       done
-       $rm -f try.* try$exe_ext
-esac
-case "$stdio_stream_array" in
-'')    $cat >&4 <<EOM
-I can't figure out how to access stdio streams by file descriptor number.
-EOM
-       ;;
-*)     $cat >&4 <<EOM
-You can access stdio streams by file descriptor number by using $stdio_stream_array.
-EOM
-       ;;
-esac
-
 # SunOS has a <unistd.h> which we generally avoid, but need for this test.
 # For everyone else, we'll trust i_unistd.
 t_unistd=$i_unistd
@@ -10975,6 +10978,7 @@ $cat >try.c <<EOCP
 #include <unistd.h>
 #endif
 #$d_sysconf HAS_SYSCONF
+#$stdio_stream_array
 int main() {
   FILE* p = fopen("try.out", "w");
 #ifdef TRY_FPUTC
@@ -11005,12 +11009,14 @@ int main() {
 #   endif
 #  endif
 # endif
+# ifdef HAS_STDIO_STREAM_ARRAY
     if (open_max > 0) {
       long i;
       for (i = 0; i < open_max; i++)
          fflush(&$stdio_stream_array[i]);
     }  
   }
+# endif
 #endif
   _exit(42);
 }
@@ -11054,26 +11060,26 @@ case "$fflushNULL" in
        x)      $cat >&4 <<EOM
 Your fflush(NULL) works okay.
 EOM
-               fflushNULL=define
+               fflushNULL="$define"
                ;;
        '')     $cat >&4 <<EOM
 Your fflush(NULL) isn't working (contrary to ANSI C).
 EOM
-               fflushNULL=undef
+               fflushNULL="$undef"
                ;;
        *)      $cat >&4 <<EOM
 Cannot figure out whether your fflush(NULL) works or not.
 I'm assuming it doesn't (contrary to ANSI C).
 EOM
-               fflushNULL=undef
+               fflushNULL="$undef"
                ;;
        esac
        ;;
 $define|true|[yY]*)
-       fflushNULL=define
+       fflushNULL="$define"
        ;;
 *)
-       fflushNULL=undef
+       fflushNULL="$undef"
        ;;
 esac
 : check for fflush all behaviour
@@ -11091,18 +11097,18 @@ case "$fflushall" in
        x)      $cat >&4 <<EOM
 Flushing explicitly all the stdio streams works.
 EOM
-               fflushall=define
+               fflushall="$define"
                ;;
        '')     $cat >&4 <<EOM
 Flushing explicitly all the stdio streams doesn't work.
 EOM
-               fflushall=undef
+               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
+               fflushall="$undef"
                ;;
        esac
        case "$fflushall$fflushNULL" in
@@ -11114,10 +11120,10 @@ EOM
        esac
        ;;
 $define|true|[yY]*)
-       fflushall=define
+       fflushall="$define"
        ;;
 *)
-       fflushall=undef
+       fflushall="$undef"
        ;;
 esac
 case "$fflushNULL$fflushall" in
@@ -13153,6 +13159,7 @@ d_statfsflags='$d_statfsflags'
 d_statvfs='$d_statvfs'
 d_stdio_cnt_lval='$d_stdio_cnt_lval'
 d_stdio_ptr_lval='$d_stdio_ptr_lval'
+d_stdio_stream_array='$d_stdio_stream_array'
 d_stdiobase='$d_stdiobase'
 d_stdstdio='$d_stdstdio'
 d_store64='$d_store64'
index 6059a7c..5bc9274 100644 (file)
@@ -2469,10 +2469,15 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
 #$d_ftello64    HAS_FTELLO64           /**/
 #$d_tmpfile64   HAS_TMPFILE64  /**/
 
+/* HAS_STDIO_STREAM_ARRAY:
+ *     This symbol, if defined, tells that there is an array
+ *     holding the stdio streams.
+ */
 /* STDIO_STREAM_ARRAY:
- *     This symbol tells the name of the array holding the stdio stream_array,
- *     if any. Usual values include _iob, __iob, and __sF.
+ *     This symbol tells the name of the array holding the stdio streams.
+ *     Usual values include _iob, __iob, and __sF.
  */
+#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY  /**/
 #define STDIO_STREAM_ARRAY     $stdio_stream_array
 
 /* USE_64_BITS:
diff --git a/util.c b/util.c
index 79b9f49..a60c8fc 100644 (file)
--- a/util.c
+++ b/util.c
@@ -3202,7 +3202,7 @@ my_fflush_all(void)
     return fflush(NULL);
 #else
     long open_max = -1;
-# if defined(FFLUSH_ALL) && defined(STDIO_STREAM_ARRAY)
+# if defined(FFLUSH_ALL) && defined(HAS_STDIO_STREAM_ARRAY)
 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
     open_max = sysconf(_SC_OPEN_MAX);
 #  else