There was no answer from the DragonFly BSD developers. So I'm adding the DragonFly BSD support without their system support.
2008-04-26 Bruno Haible <[EMAIL PROTECTED]> Add tentative support for DragonFly BSD. * lib/stdio-impl.h: Add macros for DragonFly BSD. * lib/fbufmode.c (fbufmode): Update conditionals. Use fp_ instead of fp. * lib/fflush.c (clear_ungetc_buffer, disable_seek_optimization, restore_seek_optimization, update_fpos_cache, rpl_fflush: Likewise. * lib/fpurge.c (fpurge): Likewise. * lib/freadable.c (freaadable): Likewise. * lib/freadahead.c (freadahead): Likewise. * lib/freading.c (freading): Likewise. * lib/freadptr.c (freadptr): Likewise. * lib/freadseek.c (freadptrinc): Likewise. * lib/fseeko.c (fseeko): Likewise. * lib/fseterr.c (fseterr): Likewise. * lib/fwritable.c (fwritable): Likewise. * lib/fwriting.c (fwriting): Likewise. *** lib/fbufmode.c.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/fbufmode.c 2008-04-26 18:35:43.000000000 +0200 *************** *** 42,51 **** if (fp->_flags & _IO_UNBUFFERED) return _IONBF; return _IOFBF; ! #elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! if (fp->_flags & __SLBF) return _IOLBF; ! if (fp->_flags & __SNBF) return _IONBF; return _IOFBF; #elif defined __EMX__ /* emx+gcc */ --- 42,51 ---- if (fp->_flags & _IO_UNBUFFERED) return _IONBF; return _IOFBF; ! #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! if (fp_->_flags & __SLBF) return _IOLBF; ! if (fp_->_flags & __SNBF) return _IONBF; return _IOFBF; #elif defined __EMX__ /* emx+gcc */ *** lib/fflush.c.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/fflush.c 2008-04-26 18:45:19.000000000 +0200 *************** *** 34,62 **** static inline void clear_ungetc_buffer (FILE *fp) { ! #if defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ if (HASUB (fp)) { ! fp->_p += stream->_r; ! fp->_r = 0; } #endif } ! #if defined __sferror && defined __SNPT /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ static inline int disable_seek_optimization (FILE *fp) { ! int saved_flags = fp->_flags & (__SOPT | __SNPT); ! fp->_flags = (fp->_flags & ~__SOPT) | __SNPT; return saved_flags; } static inline void restore_seek_optimization (FILE *fp, int saved_flags) { ! fp->_flags = (fp->_flags & ~(__SOPT | __SNPT)) | saved_flags; } #endif --- 34,62 ---- static inline void clear_ungetc_buffer (FILE *fp) { ! #if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ if (HASUB (fp)) { ! fp_->_p += fp_->_r; ! fp_->_r = 0; } #endif } ! #if (defined __sferror || defined __DragonFly__) && defined __SNPT /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ static inline int disable_seek_optimization (FILE *fp) { ! int saved_flags = fp_->_flags & (__SOPT | __SNPT); ! fp_->_flags = (fp_->_flags & ~__SOPT) | __SNPT; return saved_flags; } static inline void restore_seek_optimization (FILE *fp, int saved_flags) { ! fp_->_flags = (fp_->_flags & ~(__SOPT | __SNPT)) | saved_flags; } #endif *************** *** 64,72 **** static inline void update_fpos_cache (FILE *fp) { ! #if defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! fp->_offset = pos; ! fp->_flags |= __SOFF; #endif } --- 64,72 ---- static inline void update_fpos_cache (FILE *fp) { ! #if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! fp_->_offset = pos; ! fp_->_flags |= __SOFF; #endif } *************** *** 140,146 **** if (result != 0) return result; ! #if defined __sferror && defined __SNPT /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ { /* Disable seek optimization for the next fseeko call. This tells the --- 140,146 ---- if (result != 0) return result; ! #if (defined __sferror || defined __DragonFly__) && defined __SNPT /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ { /* Disable seek optimization for the next fseeko call. This tells the *** lib/fpurge.c.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/fpurge.c 2008-04-26 18:42:28.000000000 +0200 *************** *** 35,41 **** /* The __fpurge function does not have a return value. */ return 0; ! #elif HAVE_FPURGE /* FreeBSD, NetBSD, OpenBSD, MacOS X */ /* Call the system's fpurge function. */ # undef fpurge --- 35,41 ---- /* The __fpurge function does not have a return value. */ return 0; ! #elif HAVE_FPURGE /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X */ /* Call the system's fpurge function. */ # undef fpurge *************** *** 43,49 **** extern int fpurge (FILE *); # endif int result = fpurge (fp); ! # if defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ if (result == 0) /* Correct the invariants that fpurge broke. <stdio.h> on BSD systems says: --- 43,49 ---- extern int fpurge (FILE *); # endif int result = fpurge (fp); ! # if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ if (result == 0) /* Correct the invariants that fpurge broke. <stdio.h> on BSD systems says: *************** *** 51,58 **** If this invariant is not fulfilled and the stream is read-write but currently writing, subsequent putc or fputc calls will write directly into the buffer, although they shouldn't be allowed to. */ ! if ((fp->_flags & __SRD) != 0) ! fp->_w = 0; # endif return result; --- 51,58 ---- If this invariant is not fulfilled and the stream is read-write but currently writing, subsequent putc or fputc calls will write directly into the buffer, although they shouldn't be allowed to. */ ! if ((fp_->_flags & __SRD) != 0) ! fp_->_w = 0; # endif return result; *************** *** 71,86 **** fp->_IO_save_base = NULL; } return 0; ! # elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! fp->_p = fp->_bf._base; ! fp->_r = 0; ! fp->_w = ((fp->_flags & (__SLBF | __SNBF | __SRD)) == 0 /* fully buffered and not currently reading? */ ! ? fp->_bf._size ! : 0); /* Avoid memory leak when there is an active ungetc buffer. */ if (fp_ub._base != NULL) { ! if (fp_ub._base != fp->_ubuf) free (fp_ub._base); fp_ub._base = NULL; } --- 71,86 ---- fp->_IO_save_base = NULL; } return 0; ! # elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! fp_->_p = fp_->_bf._base; ! fp_->_r = 0; ! fp_->_w = ((fp_->_flags & (__SLBF | __SNBF | __SRD)) == 0 /* fully buffered and not currently reading? */ ! ? fp_->_bf._size ! : 0); /* Avoid memory leak when there is an active ungetc buffer. */ if (fp_ub._base != NULL) { ! if (fp_ub._base != fp_->_ubuf) free (fp_ub._base); fp_ub._base = NULL; } *** lib/freadable.c.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/freadable.c 2008-04-26 18:36:39.000000000 +0200 *************** *** 29,36 **** fast macros. */ #if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ return (fp->_flags & _IO_NO_READS) == 0; ! #elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! return (fp->_flags & (__SRW | __SRD)) != 0; #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & (_IORW | _IOREAD)) != 0; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ --- 29,36 ---- fast macros. */ #if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ return (fp->_flags & _IO_NO_READS) == 0; ! #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! return (fp_->_flags & (__SRW | __SRD)) != 0; #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & (_IORW | _IOREAD)) != 0; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ *** lib/freadahead.c.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/freadahead.c 2008-04-26 18:37:32.000000000 +0200 *************** *** 30,40 **** return (fp->_IO_read_end - fp->_IO_read_ptr) + (fp->_flags & _IO_IN_BACKUP ? fp->_IO_save_end - fp->_IO_save_base : 0); ! #elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! if ((fp->_flags & __SWR) != 0 || fp->_r < 0) return 0; ! return fp->_r ! + (HASUB (fp) ? fp->_ur : 0); #elif defined __EMX__ /* emx+gcc */ if ((fp->_flags & _IOWRT) != 0) return 0; --- 30,40 ---- return (fp->_IO_read_end - fp->_IO_read_ptr) + (fp->_flags & _IO_IN_BACKUP ? fp->_IO_save_end - fp->_IO_save_base : 0); ! #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! if ((fp_->_flags & __SWR) != 0 || fp_->_r < 0) return 0; ! return fp_->_r ! + (HASUB (fp) ? fp_->_ur : 0); #elif defined __EMX__ /* emx+gcc */ if ((fp->_flags & _IOWRT) != 0) return 0; *** lib/freading.c.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/freading.c 2008-04-26 18:37:55.000000000 +0200 *************** *** 35,42 **** return ((fp->_flags & _IO_NO_WRITES) != 0 || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 && fp->_IO_read_base != NULL)); ! #elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! return (fp->_flags & __SRD) != 0; #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & _IOREAD) != 0; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ --- 35,42 ---- return ((fp->_flags & _IO_NO_WRITES) != 0 || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 && fp->_IO_read_base != NULL)); ! #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! return (fp_->_flags & __SRD) != 0; #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & _IOREAD) != 0; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ *** lib/freadptr.c.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/freadptr.c 2008-04-26 18:38:58.000000000 +0200 *************** *** 37,50 **** return NULL; *sizep = size; return (const char *) fp->_IO_read_ptr; ! #elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! if ((fp->_flags & __SWR) != 0 || fp->_r < 0) return NULL; ! size = fp->_r; if (size == 0) return NULL; *sizep = size; ! return (const char *) fp->_p; #elif defined __EMX__ /* emx+gcc */ if ((fp->_flags & _IOWRT) != 0) return NULL; --- 37,50 ---- return NULL; *sizep = size; return (const char *) fp->_IO_read_ptr; ! #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! if ((fp_->_flags & __SWR) != 0 || fp_->_r < 0) return NULL; ! size = fp_->_r; if (size == 0) return NULL; *sizep = size; ! return (const char *) fp_->_p; #elif defined __EMX__ /* emx+gcc */ if ((fp->_flags & _IOWRT) != 0) return NULL; *** lib/freadseek.c.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/freadseek.c 2008-04-26 18:39:55.000000000 +0200 *************** *** 36,44 **** /* Keep this code in sync with freadptr! */ #if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ fp->_IO_read_ptr += increment; ! #elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! fp->_p += increment; ! fp->_r -= increment; #elif defined __EMX__ /* emx+gcc */ fp->_ptr += increment; fp->_rcount -= increment; --- 36,44 ---- /* Keep this code in sync with freadptr! */ #if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ fp->_IO_read_ptr += increment; ! #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! fp_->_p += increment; ! fp_->_r -= increment; #elif defined __EMX__ /* emx+gcc */ fp->_ptr += increment; fp->_rcount -= increment; *** lib/fseeko.c.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/fseeko.c 2008-04-26 18:44:05.000000000 +0200 *************** *** 45,51 **** if (fp->_IO_read_end == fp->_IO_read_ptr && fp->_IO_write_ptr == fp->_IO_write_base && fp->_IO_save_base == NULL) ! #elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ # if defined __SL64 && defined __SCLE /* Cygwin */ if ((fp->_flags & __SL64) == 0) { --- 45,51 ---- if (fp->_IO_read_end == fp->_IO_read_ptr && fp->_IO_write_ptr == fp->_IO_write_base && fp->_IO_save_base == NULL) ! #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ # if defined __SL64 && defined __SCLE /* Cygwin */ if ((fp->_flags & __SL64) == 0) { *************** *** 59,69 **** fclose (tmp); } # endif ! if (fp->_p == fp->_bf._base ! && fp->_r == 0 ! && fp->_w == ((fp->_flags & (__SLBF | __SNBF | __SRD)) == 0 /* fully buffered and not currently reading? */ ! ? fp->_bf._size ! : 0) && fp_ub._base == NULL) #elif defined __EMX__ /* emx+gcc */ if (fp->_ptr == fp->_buffer --- 59,69 ---- fclose (tmp); } # endif ! if (fp_->_p == fp_->_bf._base ! && fp_->_r == 0 ! && fp_->_w == ((fp_->_flags & (__SLBF | __SNBF | __SRD)) == 0 /* fully buffered and not currently reading? */ ! ? fp_->_bf._size ! : 0) && fp_ub._base == NULL) #elif defined __EMX__ /* emx+gcc */ if (fp->_ptr == fp->_buffer *************** *** 89,105 **** off_t pos = lseek (fileno (fp), offset, whence); if (pos == -1) { ! #if defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! fp->_flags &= ~__SOFF; #endif return -1; } else { ! #if defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! fp->_offset = pos; ! fp->_flags |= __SOFF; ! fp->_flags &= ~__SEOF; #elif defined __EMX__ /* emx+gcc */ fp->_flags &= ~_IOEOF; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ --- 89,105 ---- off_t pos = lseek (fileno (fp), offset, whence); if (pos == -1) { ! #if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! fp_->_flags &= ~__SOFF; #endif return -1; } else { ! #if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! fp_->_offset = pos; ! fp_->_flags |= __SOFF; ! fp_->_flags &= ~__SEOF; #elif defined __EMX__ /* emx+gcc */ fp->_flags &= ~_IOEOF; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ *** lib/fseterr.c.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/fseterr.c 2008-04-26 18:40:12.000000000 +0200 *************** *** 31,38 **** fast macros. */ #if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ fp->_flags |= _IO_ERR_SEEN; ! #elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! fp->_flags |= __SERR; #elif defined __EMX__ /* emx+gcc */ fp->_flags |= _IOERR; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ --- 31,38 ---- fast macros. */ #if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ fp->_flags |= _IO_ERR_SEEN; ! #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! fp_->_flags |= __SERR; #elif defined __EMX__ /* emx+gcc */ fp->_flags |= _IOERR; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ *** lib/fwritable.c.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/fwritable.c 2008-04-26 18:40:38.000000000 +0200 *************** *** 29,36 **** fast macros. */ #if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ return (fp->_flags & _IO_NO_WRITES) == 0; ! #elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! return (fp->_flags & (__SRW | __SWR)) != 0; #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & (_IORW | _IOWRT)) != 0; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ --- 29,36 ---- fast macros. */ #if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ return (fp->_flags & _IO_NO_WRITES) == 0; ! #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! return (fp_->_flags & (__SRW | __SWR)) != 0; #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & (_IORW | _IOWRT)) != 0; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ *** lib/fwriting.c.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/fwriting.c 2008-04-26 18:40:59.000000000 +0200 *************** *** 29,36 **** fast macros. */ #if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ return (fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) != 0; ! #elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ ! return (fp->_flags & __SWR) != 0; #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & _IOWRT) != 0; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ --- 29,36 ---- fast macros. */ #if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */ return (fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) != 0; ! #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! return (fp_->_flags & __SWR) != 0; #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & _IOWRT) != 0; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ *** lib/stdio-impl.h.orig 2008-04-26 18:46:24.000000000 +0200 --- lib/stdio-impl.h 2008-04-26 18:23:55.000000000 +0200 *************** *** 21,27 **** /* BSD stdio derived implementations. */ ! #if defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ # if defined __NetBSD__ || defined __OpenBSD__ /* NetBSD, OpenBSD */ /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> --- 21,54 ---- /* BSD stdio derived implementations. */ ! #if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ ! ! # if defined __DragonFly__ /* DragonFly */ ! /* See <http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/priv_stdio.h?rev=HEAD&content-type=text/x-cvsweb-markup>. */ ! # define fp_ ((struct { struct __FILE_public pub; \ ! struct { unsigned char *_base; int _size; } _bf; \ ! void *cookie; \ ! void *_close; \ ! void *_read; \ ! void *_seek; \ ! void *_write; \ ! struct { unsigned char *_base; int _size; } _ub; \ ! int _ur; \ ! unsigned char _ubuf[3]; \ ! unsigned cahr _nbuf[1]; \ ! struct { unsigned char *_base; int _size; } _lb; \ ! int _blksize; \ ! fpos_t _offset; \ ! /* More fields, not relevant here. */ \ ! } *) fp) ! /* See <http://www.dragonflybsd.org/cvsweb/src/include/stdio.h?rev=HEAD&content-type=text/x-cvsweb-markup>. */ ! # define _p pub._p ! # define _flags pub._flags ! # define _r pub._r ! # define _w pub._w ! # else ! # define fp_ fp ! # endif # if defined __NetBSD__ || defined __OpenBSD__ /* NetBSD, OpenBSD */ /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> *************** *** 32,38 **** /* More fields, not relevant here. */ }; # define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub ! # else /* FreeBSD, MacOS X, Cygwin */ # define fp_ub fp->_ub # endif --- 59,65 ---- /* More fields, not relevant here. */ }; # define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub ! # else /* FreeBSD, DragonFly, MacOS X, Cygwin */ # define fp_ub fp->_ub # endif