[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: QNX and stdio extension modules (was: Re: gnulib request),
Bruno Haible <=