stdioext: Add support for Minix.
authorBruno Haible <bruno@clisp.org>
Sun, 31 Jul 2011 19:16:15 +0000 (21:16 +0200)
committerBruno Haible <bruno@clisp.org>
Sun, 31 Jul 2011 19:16:15 +0000 (21:16 +0200)
* lib/fbufmode.c (fbufmode) [__minix]: Add conditional code.
* lib/fpurge.c (fpurge): Likewise.
* lib/freadahead.c (freadahead): Likewise.
* lib/freadable.c (freadable): Likewise.
* lib/freading.c (freading): Likewise.
* lib/freadptr.c (freadptr): Likewise.
* lib/freadseek.c (freadptrinc): Likewise.
* lib/fseeko.c (rpl_fseeko): Likewise.
* lib/fseterr.c (fseterr): Likewise.
* lib/fwritable.c (fwritable): Likewise.
* lib/fwriting.c (fwriting): Likewise.
* lib/fflush.c (clear_ungetc_buffer): Update comment.
* m4/fpending.m4 (gl_PREREQ_FPENDING): Add a variant for Minix.

14 files changed:
ChangeLog
lib/fbufmode.c
lib/fflush.c
lib/fpurge.c
lib/freadable.c
lib/freadahead.c
lib/freading.c
lib/freadptr.c
lib/freadseek.c
lib/fseeko.c
lib/fseterr.c
lib/fwritable.c
lib/fwriting.c
m4/fpending.m4

index 31952bbd0d19268874854424f5d51503dff939fc..077372b74cdd9289b0b7a1fe7fc1d36acdfe2832 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2011-07-31  Bruno Haible  <bruno@clisp.org>
+
+       stdioext: Add support for Minix.
+       * lib/fbufmode.c (fbufmode) [__minix]: Add conditional code.
+       * lib/fpurge.c (fpurge): Likewise.
+       * lib/freadahead.c (freadahead): Likewise.
+       * lib/freadable.c (freadable): Likewise.
+       * lib/freading.c (freading): Likewise.
+       * lib/freadptr.c (freadptr): Likewise.
+       * lib/freadseek.c (freadptrinc): Likewise.
+       * lib/fseeko.c (rpl_fseeko): Likewise.
+       * lib/fseterr.c (fseterr): Likewise.
+       * lib/fwritable.c (fwritable): Likewise.
+       * lib/fwriting.c (fwriting): Likewise.
+       * lib/fflush.c (clear_ungetc_buffer): Update comment.
+       * m4/fpending.m4 (gl_PREREQ_FPENDING): Add a variant for Minix.
+
 2011-07-31  Bruno Haible  <bruno@clisp.org>
 
        errno: Port to Minix.
index 01b0881f755454915782e34fe5d095c432d49efd..8b29ae78e786e213d893c08fd82aa3b55dff1dc4 100644 (file)
@@ -50,6 +50,8 @@ fbufmode (FILE *fp)
   return _IOFBF;
 #elif defined __EMX__               /* emx+gcc */
   return fp->_flags & (_IOLBF | _IONBF | _IOFBF);
+#elif defined __minix               /* Minix */
+  return fp->_flags & (_IOLBF | _IONBF | _IOFBF);
 #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
 # if HAVE___FLBF                    /* Solaris >= 7 */
   if (__flbf (fp))
index 437e310260cc8697e23781e6f9d9a91911e8fdfc..fdbe6de064790e5a80e756f35d60b9301773b1e3 100644 (file)
@@ -60,7 +60,7 @@ clear_ungetc_buffer (FILE *fp)
       fp->_ungetc_count = 0;
       fp->_rcount = - fp->_rcount;
     }
-# elif defined _IOERR               /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
+# elif defined _IOERR               /* Minix, AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
   /* Nothing to do.  */
 # else                              /* other implementations */
   fseeko (fp, 0, SEEK_CUR);
index 7e69fb4081ad7196c51bc8aba3c753e2f3ad7f36..a299d1cf57e961a80817109606c4fff91de0b257 100644 (file)
@@ -91,6 +91,11 @@ fpurge (FILE *fp)
   fp->_wcount = 0;
   fp->_ungetc_count = 0;
   return 0;
+# elif defined __minix              /* Minix */
+  fp->_ptr = fp->_buf;
+  if (fp->_ptr != NULL)
+    fp->_count = 0;
+  return 0;
 # elif defined _IOERR               /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
   fp->_ptr = fp->_base;
   if (fp->_ptr != NULL)
index 065eb3f0015341c29b57b5e32aa681d654763ab1..243914fa7a2fc2ea5e5a3db303c3beaad019b5fe 100644 (file)
@@ -33,6 +33,8 @@ freadable (FILE *fp)
   return (fp_->_flags & (__SRW | __SRD)) != 0;
 #elif defined __EMX__               /* emx+gcc */
   return (fp->_flags & (_IORW | _IOREAD)) != 0;
+#elif defined __minix               /* Minix */
+  return (fp->_flags & _IOREAD) != 0;
 #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
   return (fp->_flag & (_IORW | _IOREAD)) != 0;
 #elif defined __QNX__               /* QNX */
index 27f5c9579fabd968332edbe029a639adcf841999..da1ac780b644610460e8bbb1db78ab2ffe31ba3d 100644 (file)
@@ -48,6 +48,10 @@ freadahead (FILE *fp)
   /* equivalent to
      (fp->_ungetc_count == 0 ? fp->_rcount : fp->_ungetc_count - fp->_rcount) */
   return (fp->_rcount > 0 ? fp->_rcount : fp->_ungetc_count - fp->_rcount);
+#elif defined __minix               /* Minix */
+  if ((fp_->_flags & _IOWRITING) != 0)
+    return 0;
+  return fp_->_count;
 #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
   if ((fp_->_flag & _IOWRT) != 0)
     return 0;
index 51aed0e9b2686b42b9544cab000682c732d69309..5b95c22c3755809c8a5a3ef3625b58619a04480f 100644 (file)
@@ -39,6 +39,8 @@ freading (FILE *fp)
   return (fp_->_flags & __SRD) != 0;
 # elif defined __EMX__               /* emx+gcc */
   return (fp->_flags & _IOREAD) != 0;
+# elif defined __minix               /* Minix */
+  return (fp->_flags & _IOREADING) != 0;
 # elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
 #  if defined __sun                  /* Solaris */
   return (fp->_flag & _IOREAD) != 0 && (fp->_flag & _IOWRT) == 0;
index e7d57b433acb1c52b85b4b5032d7d1930f099266..afd7a3eb521a6dc3297eea8bf30d8fbc93958a57 100644 (file)
@@ -56,6 +56,14 @@ freadptr (FILE *fp, size_t *sizep)
     abort ();
   *sizep = fp->_rcount;
   return fp->_ptr;
+#elif defined __minix               /* Minix */
+  if ((fp_->_flags & _IOWRITING) != 0)
+    return NULL;
+  size = fp_->_count;
+  if (size == 0)
+    return NULL;
+  *sizep = size;
+  return (const char *) fp_->_ptr;
 #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
   if ((fp_->_flag & _IOWRT) != 0)
     return NULL;
index 8aa4e2fe0e94c66db8eca8ebf2572fb2e23fa4da..4fbad2d784b96bb1a9b328941dd87dbebbf97419 100644 (file)
@@ -42,6 +42,9 @@ freadptrinc (FILE *fp, size_t increment)
 #elif defined __EMX__               /* emx+gcc */
   fp->_ptr += increment;
   fp->_rcount -= increment;
+#elif defined __minix               /* Minix */
+  fp_->_ptr += increment;
+  fp_->_count -= increment;
 #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
   fp_->_ptr += increment;
   fp_->_cnt -= increment;
index abab5e995221ea3fc95f2af621b057545a0b9d55..1546f1bf5be04f2ad0e478dd78ac5ef093276425 100644 (file)
@@ -69,6 +69,9 @@ fseeko (FILE *fp, off_t offset, int whence)
       && fp->_rcount == 0
       && fp->_wcount == 0
       && fp->_ungetc_count == 0)
+#elif defined __minix               /* Minix */
+  if (fp_->_ptr == fp_->_buf
+      && (fp_->_ptr == NULL || fp_->_count == 0))
 #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
   if (fp_->_ptr == fp_->_base
       && (fp_->_ptr == NULL || fp_->_cnt == 0))
index d8df7b57d7ae636f096537e51edb93335f62dff5..eaad702c81d61c98f4a005af5c435ced2c9bd8dc 100644 (file)
@@ -35,6 +35,8 @@ fseterr (FILE *fp)
   fp_->_flags |= __SERR;
 #elif defined __EMX__               /* emx+gcc */
   fp->_flags |= _IOERR;
+#elif defined __minix               /* Minix */
+  fp->_flags |= _IOERR;
 #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
   fp_->_flag |= _IOERR;
 #elif defined __UCLIBC__            /* uClibc */
index 04bc97c5b90ed9fa8618a9e34ef83e3e11c93b4e..ededfb3c96183a695bb0c8e7d454930832454ff4 100644 (file)
@@ -33,6 +33,8 @@ fwritable (FILE *fp)
   return (fp_->_flags & (__SRW | __SWR)) != 0;
 #elif defined __EMX__               /* emx+gcc */
   return (fp->_flags & (_IORW | _IOWRT)) != 0;
+#elif defined __minix               /* Minix */
+  return (fp->_flags & _IOWRITE) != 0;
 #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
   return (fp->_flag & (_IORW | _IOWRT)) != 0;
 #elif defined __QNX__               /* QNX */
index fd40f511185fb88be0b6ecffaf84d44085b504bd..9b1dc14f90e080c108ad3b98b43f647ae96f0a5f 100644 (file)
@@ -33,6 +33,8 @@ fwriting (FILE *fp)
   return (fp_->_flags & __SWR) != 0;
 #elif defined __EMX__               /* emx+gcc */
   return (fp->_flags & _IOWRT) != 0;
+#elif defined __minix               /* Minix */
+  return (fp->_flags & _IOWRITING) != 0;
 #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, NonStop Kernel */
   return (fp->_flag & _IOWRT) != 0;
 #elif defined __UCLIBC__            /* uClibc */
index 5d93f8e97f490189fa02fba816c5e8b02591e159..35f465165f185a9dced8a720716c361a51d55253 100644 (file)
@@ -1,4 +1,4 @@
-# serial 16
+# serial 17
 
 # Copyright (C) 2000-2001, 2004-2011 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
@@ -58,6 +58,9 @@ AC_DEFUN([gl_PREREQ_FPENDING],
           '# emx+gcc'                                                   \
           'fp->_ptr - fp->_buffer'                                      \
                                                                         \
+          '# Minix'                                                     \
+          'fp->_ptr - fp->_buf'                                         \
+                                                                        \
           '# VMS'                                                       \
           '(*fp)->_ptr - (*fp)->_base'                                  \
                                                                         \