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 <[EMAIL PROTECTED]> * 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