From dc42aaceb3894eba4c2398fe920cc7241cbdb1b6 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 7 Jan 2017 14:49:10 +0100 Subject: [PATCH] stdioext: Port to Minix 3.2 and newer. * lib/stdio-impl.h: Treat __minix like the newest NetBSD. * lib/fseeko.c (fseeko): Likewise. Reported by Nelson Beebe via Paul Eggert. --- ChangeLog | 7 +++++++ lib/fbufmode.c | 2 +- lib/fflush.c | 8 ++++---- lib/fpending.c | 2 +- lib/fpurge.c | 4 ++-- lib/freadable.c | 2 +- lib/freadahead.c | 2 +- lib/freading.c | 2 +- lib/freadptr.c | 2 +- lib/freadseek.c | 2 +- lib/fseeko.c | 8 ++++---- lib/fseterr.c | 2 +- lib/fwritable.c | 2 +- lib/fwriting.c | 2 +- lib/stdio-impl.h | 4 ++-- 15 files changed, 29 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index d51ed8452e..14918104a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2017-01-07 Bruno Haible + + stdioext: Port to Minix 3.2 and newer. + * lib/stdio-impl.h: Treat __minix like the newest NetBSD. + * lib/fseeko.c (fseeko): Likewise. + Reported by Nelson Beebe via Paul Eggert. + 2017-01-06 Paul Eggert getprogname: port to IRIX diff --git a/lib/fbufmode.c b/lib/fbufmode.c index 6c21a622ac..45f0b97fbf 100644 --- a/lib/fbufmode.c +++ b/lib/fbufmode.c @@ -43,7 +43,7 @@ fbufmode (FILE *fp) return _IONBF; return _IOFBF; #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ if (fp_->_flags & __SLBF) return _IOLBF; if (fp_->_flags & __SNBF) diff --git a/lib/fflush.c b/lib/fflush.c index 5a2e163f36..775acdf23e 100644 --- a/lib/fflush.c +++ b/lib/fflush.c @@ -51,7 +51,7 @@ static void clear_ungetc_buffer (FILE *fp) { # if defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ if (HASUB (fp)) { fp_->_p += fp_->_r; @@ -75,7 +75,7 @@ clear_ungetc_buffer (FILE *fp) #if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT -/* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ +/* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ static int disable_seek_optimization (FILE *fp) @@ -98,7 +98,7 @@ update_fpos_cache (FILE *fp _GL_UNUSED_PARAMETER, off_t pos _GL_UNUSED_PARAMETER) { # if defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ # if defined __CYGWIN__ /* fp_->_offset is typed as an integer. */ fp_->_offset = pos; @@ -199,7 +199,7 @@ rpl_fflush (FILE *stream) } # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ { /* Disable seek optimization for the next fseeko call. This tells the diff --git a/lib/fpending.c b/lib/fpending.c index 8761c77ca6..c9b7786685 100644 --- a/lib/fpending.c +++ b/lib/fpending.c @@ -35,7 +35,7 @@ __fpending (FILE *fp) #if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ return fp->_IO_write_ptr - fp->_IO_write_base; #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ return fp->_p - fp->_bf._base; #elif defined __EMX__ /* emx+gcc */ return fp->_ptr - fp->_buffer; diff --git a/lib/fpurge.c b/lib/fpurge.c index 036dffb235..8e892f2520 100644 --- a/lib/fpurge.c +++ b/lib/fpurge.c @@ -44,7 +44,7 @@ fpurge (FILE *fp) # endif int result = fpurge (fp); # if defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ if (result == 0) /* Correct the invariants that fpurge broke. on BSD systems says: @@ -73,7 +73,7 @@ fpurge (FILE *fp) } return 0; # elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ fp_->_p = fp_->_bf._base; fp_->_r = 0; fp_->_w = ((fp_->_flags & (__SLBF | __SNBF | __SRD)) == 0 /* fully buffered and not currently reading? */ diff --git a/lib/freadable.c b/lib/freadable.c index e397e22887..6adf7683f4 100644 --- a/lib/freadable.c +++ b/lib/freadable.c @@ -34,7 +34,7 @@ freadable (FILE *fp) #if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ return (fp->_flags & _IO_NO_READS) == 0; #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ return (fp_->_flags & (__SRW | __SRD)) != 0; #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & (_IORW | _IOREAD)) != 0; diff --git a/lib/freadahead.c b/lib/freadahead.c index fd2e467880..6820317ecc 100644 --- a/lib/freadahead.c +++ b/lib/freadahead.c @@ -32,7 +32,7 @@ freadahead (FILE *fp) + (fp->_flags & _IO_IN_BACKUP ? fp->_IO_save_end - fp->_IO_save_base : 0); #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ if ((fp_->_flags & __SWR) != 0 || fp_->_r < 0) return 0; # if defined __DragonFly__ diff --git a/lib/freading.c b/lib/freading.c index e1cdd9009d..0c361ae21f 100644 --- a/lib/freading.c +++ b/lib/freading.c @@ -36,7 +36,7 @@ freading (FILE *fp) || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 && fp->_IO_read_base != NULL)); # elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ return (fp_->_flags & __SRD) != 0; # elif defined __EMX__ /* emx+gcc */ return (fp->_flags & _IOREAD) != 0; diff --git a/lib/freadptr.c b/lib/freadptr.c index c1e2c9fc82..8832beef78 100644 --- a/lib/freadptr.c +++ b/lib/freadptr.c @@ -38,7 +38,7 @@ freadptr (FILE *fp, size_t *sizep) *sizep = size; return (const char *) fp->_IO_read_ptr; #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ if ((fp_->_flags & __SWR) != 0 || fp_->_r < 0) return NULL; size = fp_->_r; diff --git a/lib/freadseek.c b/lib/freadseek.c index 0c70726bd5..7fcbadc61d 100644 --- a/lib/freadseek.c +++ b/lib/freadseek.c @@ -39,7 +39,7 @@ freadptrinc (FILE *fp, size_t increment) #elif defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ fp->_IO_read_ptr += increment; #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ fp_->_p += increment; fp_->_r -= increment; #elif defined __EMX__ /* emx+gcc */ diff --git a/lib/fseeko.c b/lib/fseeko.c index 500c71672a..f57606b881 100644 --- a/lib/fseeko.c +++ b/lib/fseeko.c @@ -52,7 +52,7 @@ fseeko (FILE *fp, off_t offset, int whence) && fp->_IO_write_ptr == fp->_IO_write_base && fp->_IO_save_base == NULL) #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ # if defined __SL64 && defined __SCLE /* Cygwin */ if ((fp->_flags & __SL64) == 0) { @@ -117,7 +117,7 @@ fseeko (FILE *fp, off_t offset, int whence) if (pos == -1) { #if defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ fp_->_flags &= ~__SOFF; #endif return -1; @@ -127,8 +127,8 @@ fseeko (FILE *fp, off_t offset, int whence) fp->_flags &= ~_IO_EOF_SEEN; fp->_offset = pos; #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ -# if defined __CYGWIN__ || (defined __NetBSD__ && __NetBSD_Version__ >= 600000000) + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ +# if defined __CYGWIN__ || (defined __NetBSD__ && __NetBSD_Version__ >= 600000000) || defined __minix /* fp_->_offset is typed as an integer. */ fp_->_offset = pos; # else diff --git a/lib/fseterr.c b/lib/fseterr.c index b81ee2706d..ca834920f1 100644 --- a/lib/fseterr.c +++ b/lib/fseterr.c @@ -32,7 +32,7 @@ fseterr (FILE *fp) #if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ fp->_flags |= _IO_ERR_SEEN; #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ fp_->_flags |= __SERR; #elif defined __EMX__ /* emx+gcc */ fp->_flags |= _IOERR; diff --git a/lib/fwritable.c b/lib/fwritable.c index 925feb824b..533f8b8e52 100644 --- a/lib/fwritable.c +++ b/lib/fwritable.c @@ -34,7 +34,7 @@ fwritable (FILE *fp) #if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ return (fp->_flags & _IO_NO_WRITES) == 0; #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ return (fp_->_flags & (__SRW | __SWR)) != 0; #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & (_IORW | _IOWRT)) != 0; diff --git a/lib/fwriting.c b/lib/fwriting.c index d99a91eddd..173d098fa2 100644 --- a/lib/fwriting.c +++ b/lib/fwriting.c @@ -30,7 +30,7 @@ fwriting (FILE *fp) #if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ return (fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) != 0; #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ return (fp_->_flags & __SWR) != 0; #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & _IOWRT) != 0; diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h index d2d4daa6e1..75a945eb72 100644 --- a/lib/stdio-impl.h +++ b/lib/stdio-impl.h @@ -29,7 +29,7 @@ #include /* For detecting Plan9. */ #if defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ # if defined __DragonFly__ /* DragonFly */ /* See . */ @@ -58,7 +58,7 @@ # define fp_ fp # endif -# if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ || defined __ANDROID__ /* NetBSD >= 1.5ZA, OpenBSD, Android */ +# if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ || defined __minix || defined __ANDROID__ /* NetBSD >= 1.5ZA, OpenBSD, Minix 3, Android */ /* See and */ struct __sfileext -- 2.39.5