bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: extended stdio API on DragonFly


From: Bruno Haible
Subject: Re: extended stdio API on DragonFly
Date: Sat, 26 Apr 2008 18:57:43 +0200
User-agent: KMail/1.5.4

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  <address@hidden>

        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
  





reply via email to

[Prev in Thread] Current Thread [Next in Thread]