Make the stdio tricks of fflush_all() to exist only if
Jarkko Hietaniemi [Wed, 4 Apr 2001 13:20:39 +0000 (13:20 +0000)]
stdio is being used.

p4raw-id: //depot/perl@9542

util.c

diff --git a/util.c b/util.c
index 7e3934e..0129285 100644 (file)
--- a/util.c
+++ b/util.c
@@ -3958,49 +3958,52 @@ Perl_get_vtbl(pTHX_ int vtbl_id)
     return result;
 }
 
-#if !defined(FFLUSH_NULL) && defined(HAS__FWALK)
+#ifdef PERLIO_IS_STDIO
+# if !defined(FFLUSH_NULL) && defined(HAS__FWALK)
 static int S_fflush(FILE *fp);
 
 static int
 S_fflush(FILE *fp)
 {
-    return fflush(fp);
+    return fflush(fp); /* fflush() maybe a macro but we need a function */
 }
+# endif
 #endif
 
 I32
 Perl_my_fflush_all(pTHX)
 {
-#if defined(FFLUSH_NULL)
+#ifdef FFLUSH_NULL
     return PerlIO_flush(NULL);
 #else
-# if defined(HAS__FWALK)
+# ifdef PERLIO_IS_STDIO
+#  if defined(HAS__FWALK)
     /* undocumented, unprototyped, but very useful BSDism */
     extern void _fwalk(int (*)(FILE *));
     _fwalk(&S_fflush);
     return 0;
-#   else
+#    else
     long open_max = -1;
-#  if defined(FFLUSH_ALL) && defined(HAS_STDIO_STREAM_ARRAY)
-#   ifdef PERL_FFLUSH_ALL_FOPEN_MAX
+#   if defined(FFLUSH_ALL) && defined(HAS_STDIO_STREAM_ARRAY)
+#    ifdef PERL_FFLUSH_ALL_FOPEN_MAX
     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
-#   else
-#   if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
+#    else
+#     if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
     open_max = sysconf(_SC_OPEN_MAX);
-#   else
-#    ifdef FOPEN_MAX
+#     else
+#      ifdef FOPEN_MAX
     open_max = FOPEN_MAX;
-#    else
-#     ifdef OPEN_MAX
+#      else
+#       ifdef OPEN_MAX
     open_max = OPEN_MAX;
-#     else
-#      ifdef _NFILE
+#       else
+#        ifdef _NFILE
     open_max = _NFILE;
+#        endif
+#       endif
 #      endif
 #     endif
 #    endif
-#   endif
-#   endif
     if (open_max > 0) {
       long i;
       for (i = 0; i < open_max; i++)
@@ -4010,9 +4013,10 @@ Perl_my_fflush_all(pTHX)
                PerlIO_flush(&STDIO_STREAM_ARRAY[i]);
       return 0;
     }
-#  endif
+#   endif
     SETERRNO(EBADF,RMS$_IFI);
     return EOF;
+#  endif
 # endif
 #endif
 }