bug-gnulib
[Top][All Lists]
Advanced

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

Re: QNX and stdio extension modules (was: Re: gnulib request)


From: Bruno Haible
Subject: Re: QNX and stdio extension modules (was: Re: gnulib request)
Date: Wed, 7 Nov 2007 01:49:27 +0100
User-agent: KMail/1.5.4

The QNX port was previously untested. Now, with the help of a QNX employee,
here are modifications that makes the tests of fbufmode, fflush, fpending,
freadahead, freading, fseterr, ftell, ftello, fwriting all pass.

The fpurge test may or may not pass, I don't know.

The fseek, fseeko tests fail, probably due to a bug in QNX stdio.

The freadable, fwritable tests are skipped, probably due to another bug in
QNX stdio.


2007-11-06  Bruno Haible  <address@hidden>

        * lib/fbufmode.c (fbufmode) [QNX]: Use numerical values for flags; the
        symbolic values are not defined in a public header.
        * lib/freadable.c (freadable) [QNX]: Likewise.
        * lib/freadahead.c (freadahead) [QNX]: Likewise.
        * lib/freading.c (freading) [QNX]: Likewise.
        * lib/fseterr.c (fseterr) [QNX]: Likewise.
        * lib/fwritable.c (fwritable) [QNX]: Likewise.
        * lib/fwriting.c (fwriting) [QNX]: Likewise.
        * lib/fpurge.c (fpurge) [QNX]: Likewise. Add a return statement.
        Reported by Alain Magloire.

*** lib/fbufmode.c.orig 2007-11-07 01:29:32.000000000 +0100
--- lib/fbufmode.c      2007-11-05 02:08:50.000000000 +0100
***************
*** 75,83 ****
      return _IONBF;
    return _IOFBF;
  #elif defined __QNX__               /* QNX */
!   if (fp->_Mode & _MLBF)
      return _IOLBF;
!   if (fp->_Mode & _MNBF)
      return _IONBF;
    return _IOFBF;
  #else
--- 75,83 ----
      return _IONBF;
    return _IOFBF;
  #elif defined __QNX__               /* QNX */
!   if (fp->_Mode & 0x400 /* _MLBF */)
      return _IOLBF;
!   if (fp->_Mode & 0x800 /* _MNBF */)
      return _IONBF;
    return _IOFBF;
  #else
*** lib/fpurge.c.orig   2007-11-07 01:29:32.000000000 +0100
--- lib/fpurge.c        2007-11-06 23:43:34.000000000 +0100
***************
*** 106,117 ****
  # elif defined __QNX__              /* QNX */
    fp->_Rback = fp->_Back + sizeof (fp->_Back);
    fp->_Rsave = NULL;
!   if (fp->_Mode & _MWRITE)
      /* fp->_Buf <= fp->_Next <= fp->_Wend */
      fp->_Next = fp->_Buf;
    else
      /* fp->_Buf <= fp->_Next <= fp->_Rend */
      fp->_Rend = fp->_Next;
  # else
   #error "Please port gnulib fpurge.c to your platform! Look at the 
definitions of fflush, setvbuf and ungetc on your system, then report this to 
bug-gnulib."
  # endif
--- 106,118 ----
  # elif defined __QNX__              /* QNX */
    fp->_Rback = fp->_Back + sizeof (fp->_Back);
    fp->_Rsave = NULL;
!   if (fp->_Mode & 0x2000 /* _MWRITE */)
      /* fp->_Buf <= fp->_Next <= fp->_Wend */
      fp->_Next = fp->_Buf;
    else
      /* fp->_Buf <= fp->_Next <= fp->_Rend */
      fp->_Rend = fp->_Next;
+   return 0;
  # else
   #error "Please port gnulib fpurge.c to your platform! Look at the 
definitions of fflush, setvbuf and ungetc on your system, then report this to 
bug-gnulib."
  # endif
*** lib/freadable.c.orig        2007-11-07 01:29:32.000000000 +0100
--- lib/freadable.c     2007-11-06 00:07:02.000000000 +0100
***************
*** 32,38 ****
  #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
mingw */
    return (fp->_flag & (_IORW | _IOREAD)) != 0;
  #elif defined __QNX__               /* QNX */
!   return (fp->_Mode & _MOPENR) != 0;
  #else
   #error "Please port gnulib freadable.c to your platform! Look at the 
definition of fopen, fdopen on your system, then report this to bug-gnulib."
  #endif
--- 32,38 ----
  #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
mingw */
    return (fp->_flag & (_IORW | _IOREAD)) != 0;
  #elif defined __QNX__               /* QNX */
!   return (fp->_Mode & 0x1 /* _MOPENR */) != 0;
  #else
   #error "Please port gnulib freadable.c to your platform! Look at the 
definition of fopen, fdopen on your system, then report this to bug-gnulib."
  #endif
*** lib/freadahead.c.orig       2007-11-07 01:29:32.000000000 +0100
--- lib/freadahead.c    2007-11-06 00:11:13.000000000 +0100
***************
*** 56,62 ****
    return 0;
  # endif
  #elif defined __QNX__               /* QNX */
!   if ((fp->_Mode & _MWRITE) != 0)
      return 0;
    /* fp->_Buf <= fp->_Next <= fp->_Rend */
    return fp->_Rend - fp->_Next;
--- 56,62 ----
    return 0;
  # endif
  #elif defined __QNX__               /* QNX */
!   if ((fp->_Mode & 0x2000 /* _MWRITE */) != 0)
      return 0;
    /* fp->_Buf <= fp->_Next <= fp->_Rend */
    return fp->_Rend - fp->_Next;
*** lib/freading.c.orig 2007-11-07 01:29:32.000000000 +0100
--- lib/freading.c      2007-11-06 00:09:57.000000000 +0100
***************
*** 40,47 ****
  #elif defined __UCLIBC__            /* uClibc */
    return (fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) != 0;
  #elif defined __QNX__               /* QNX */
!   return ((fp->_Mode & _MOPENW) == 0
!         || (fp->_Mode & _MREAD) != 0);
  #else
   #error "Please port gnulib freading.c to your platform!"
  #endif
--- 40,47 ----
  #elif defined __UCLIBC__            /* uClibc */
    return (fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) != 0;
  #elif defined __QNX__               /* QNX */
!   return ((fp->_Mode & 0x2 /* _MOPENW */) == 0
!         || (fp->_Mode & 0x1000 /* _MREAD */) != 0);
  #else
   #error "Please port gnulib freading.c to your platform!"
  #endif
*** lib/fseterr.c.orig  2007-11-07 01:29:32.000000000 +0100
--- lib/fseterr.c       2007-11-06 00:09:03.000000000 +0100
***************
*** 47,53 ****
  #elif defined __UCLIBC__            /* uClibc */
    fp->__modeflags |= __FLAG_ERROR;
  #elif defined __QNX__               /* QNX */
!   fp->_Mode |= _MERR;
  #elif 0                             /* unknown  */
    /* Portable fallback, based on an idea by Rich Felker.
       Wow! 6 system calls for something that is just a bit operation!
--- 47,53 ----
  #elif defined __UCLIBC__            /* uClibc */
    fp->__modeflags |= __FLAG_ERROR;
  #elif defined __QNX__               /* QNX */
!   fp->_Mode |= 0x200 /* _MERR */;
  #elif 0                             /* unknown  */
    /* Portable fallback, based on an idea by Rich Felker.
       Wow! 6 system calls for something that is just a bit operation!
*** lib/fwritable.c.orig        2007-11-07 01:29:32.000000000 +0100
--- lib/fwritable.c     2007-11-06 23:43:43.000000000 +0100
***************
*** 32,38 ****
  #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
mingw */
    return (fp->_flag & (_IORW | _IOWRT)) != 0;
  #elif defined __QNX__               /* QNX */
!   return (fp->_mode & _MOPENW) != 0;
  #else
   #error "Please port gnulib fwritable.c to your platform! Look at the 
definition of fopen, fdopen on your system, then report this to bug-gnulib."
  #endif
--- 32,38 ----
  #elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
mingw */
    return (fp->_flag & (_IORW | _IOWRT)) != 0;
  #elif defined __QNX__               /* QNX */
!   return (fp->_Mode & 0x2 /* _MOPENW */) != 0;
  #else
   #error "Please port gnulib fwritable.c to your platform! Look at the 
definition of fopen, fdopen on your system, then report this to bug-gnulib."
  #endif
*** lib/fwriting.c.orig 2007-11-07 01:29:32.000000000 +0100
--- lib/fwriting.c      2007-11-06 00:10:12.000000000 +0100
***************
*** 34,41 ****
  #elif defined __UCLIBC__            /* uClibc */
    return (fp->__modeflags & __FLAG_WRITING) != 0;
  #elif defined __QNX__               /* QNX */
!   return ((fp->_Mode & _MOPENR) == 0
!         || (fp->_Mode & _MWRITE) != 0);
  #else
   #error "Please port gnulib fwriting.c to your platform!"
  #endif
--- 34,41 ----
  #elif defined __UCLIBC__            /* uClibc */
    return (fp->__modeflags & __FLAG_WRITING) != 0;
  #elif defined __QNX__               /* QNX */
!   return ((fp->_Mode & 0x1 /* _MOPENR */) == 0
!         || (fp->_Mode & 0x2000 /* _MWRITE */) != 0);
  #else
   #error "Please port gnulib fwriting.c to your platform!"
  #endif





reply via email to

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