From d4d84c1d916f5bff3bb72be92e9d1383a25077c1 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 31 Jul 2011 21:16:15 +0200 Subject: [PATCH] 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. --- ChangeLog | 17 +++++++++++++++++ lib/fbufmode.c | 2 ++ lib/fflush.c | 2 +- lib/fpurge.c | 5 +++++ lib/freadable.c | 2 ++ lib/freadahead.c | 4 ++++ lib/freading.c | 2 ++ lib/freadptr.c | 8 ++++++++ lib/freadseek.c | 3 +++ lib/fseeko.c | 3 +++ lib/fseterr.c | 2 ++ lib/fwritable.c | 2 ++ lib/fwriting.c | 2 ++ m4/fpending.m4 | 5 ++++- 14 files changed, 57 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 31952bbd0..077372b74 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,22 @@ 2011-07-31 Bruno Haible + 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 + errno: Port to Minix. * m4/errno_h.m4 (gl_HEADER_ERRNO_H): Test also whether ENETRESET and ECONNABORTED are defined. diff --git a/lib/fbufmode.c b/lib/fbufmode.c index 01b0881f7..8b29ae78e 100644 --- a/lib/fbufmode.c +++ b/lib/fbufmode.c @@ -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)) diff --git a/lib/fflush.c b/lib/fflush.c index 437e31026..fdbe6de06 100644 --- a/lib/fflush.c +++ b/lib/fflush.c @@ -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); diff --git a/lib/fpurge.c b/lib/fpurge.c index 7e69fb408..a299d1cf5 100644 --- a/lib/fpurge.c +++ b/lib/fpurge.c @@ -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) diff --git a/lib/freadable.c b/lib/freadable.c index 065eb3f00..243914fa7 100644 --- a/lib/freadable.c +++ b/lib/freadable.c @@ -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 */ diff --git a/lib/freadahead.c b/lib/freadahead.c index 27f5c9579..da1ac780b 100644 --- a/lib/freadahead.c +++ b/lib/freadahead.c @@ -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; diff --git a/lib/freading.c b/lib/freading.c index 51aed0e9b..5b95c22c3 100644 --- a/lib/freading.c +++ b/lib/freading.c @@ -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; diff --git a/lib/freadptr.c b/lib/freadptr.c index e7d57b433..afd7a3eb5 100644 --- a/lib/freadptr.c +++ b/lib/freadptr.c @@ -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; diff --git a/lib/freadseek.c b/lib/freadseek.c index 8aa4e2fe0..4fbad2d78 100644 --- a/lib/freadseek.c +++ b/lib/freadseek.c @@ -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; diff --git a/lib/fseeko.c b/lib/fseeko.c index abab5e995..1546f1bf5 100644 --- a/lib/fseeko.c +++ b/lib/fseeko.c @@ -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)) diff --git a/lib/fseterr.c b/lib/fseterr.c index d8df7b57d..eaad702c8 100644 --- a/lib/fseterr.c +++ b/lib/fseterr.c @@ -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 */ diff --git a/lib/fwritable.c b/lib/fwritable.c index 04bc97c5b..ededfb3c9 100644 --- a/lib/fwritable.c +++ b/lib/fwritable.c @@ -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 */ diff --git a/lib/fwriting.c b/lib/fwriting.c index fd40f5111..9b1dc14f9 100644 --- a/lib/fwriting.c +++ b/lib/fwriting.c @@ -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 */ diff --git a/m4/fpending.m4 b/m4/fpending.m4 index 5d93f8e97..35f465165 100644 --- a/m4/fpending.m4 +++ b/m4/fpending.m4 @@ -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' \ \ -- 2.11.0