+2007-10-03 Bruno Haible <bruno@clisp.org>
+
+ Port the stdio extensions to QNX (untested).
+ * lib/fseterr.c (fseterr): Add support for QNX.
+ * lib/fbufmode.c (fbufmode): Likewise.
+ * lib/freadable.c (freadable): Likewise.
+ * lib/fwritable.c (fwritable): Likewise.
+ * lib/freading.c (freading): Likewise.
+ * lib/fwriting.c (fwriting): Likewise.
+ * lib/freadahead.c (freadahed): Likewise.
+ * lib/fpurge.c (fpurge): Likewise.
+ * lib/fseeko.c (rpl_fseeko): Likewise.
+
2007-10-03 Bruno Haible <bruno@clisp.org>
Jim Meyering <jim@meyering.net>
Eric Blake <ebb9@byu.net>
if (fp->__modeflags & __FLAG_NBF)
return _IONBF;
return _IOFBF;
+#elif defined __QNX__ /* QNX */
+ if (fp->_Mode & _MLBF)
+ return _IOLBF;
+ if (fp->_Mode & _MNBF)
+ return _IONBF;
+ return _IOFBF;
#else
#error "Please port gnulib fbufmode.c to your platform! Look at the setvbuf implementation."
#endif
fp->__bufpos = fp->__bufread;
# endif
return 0;
+# 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
return (fp->_flags & (__SRW | __SRD)) != 0;
#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!"
+ #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
}
# else
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;
#else
#error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread on your system, then report this to bug-gnulib."
#endif
return (fp->_flag & _IOREAD) != 0;
#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
|| fp->__bufpos == fp->__bufstart)
&& ((fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) == 0
|| fp->__bufpos == fp->__bufread))
+#elif defined __QNX__ /* QNX */
+ if ((fp->_Mode & _MWRITE ? fp->_Next == fp->_Buf : fp->_Next == fp->_Rend)
+ && fp->_Rback == fp->_Back + sizeof (fp->_Back)
+ && fp->_Rsave == NULL)
#else
#error "Please port gnulib fseeko.c to your platform! Look at the code in fpurge.c, then report this to bug-gnulib."
#endif
# endif
#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!
return (fp->_flags & (__SRW | __SWR)) != 0;
#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!"
+ #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
}
return (fp->_flag & _IOWRT) != 0;
#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