Current-Users archive

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

Re: language lawyering: ftello/fseek/pread edition



On Mon, Mar 23, 2015 at 10:57:52AM +0100, Thomas Klausner wrote:
> So, unless I get it wrong (I didn't read full specs :) both functions
> are required in POSIX.1-2001 conforming stdio.h when _POSIX_C_SOURCE is
> 200112L. Also, defining _POSIX_C_SOURCE is not optional.

I disagree on the second part. POSIX does *not* require it, but targets
may choose a more restrictive set if it is not defined. That's a
difference.

> To use these functions in linux we need one of following macros to be defined:
> _FILE_OFFSET_BITS == 64 || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600

Correct, since they never managed to get their act together with 64bit
off_t.

> from NetBSD unistd.h (I hope I used correct version ...):
> <<
> /*
>  * X/Open CAE Specification Issue 5 Version 2
>  */
> #if (_XOPEN_SOURCE - 0) >= 500 || defined(_NETBSD_SOURCE)
> ssize_t	 pread(int, void *, size_t, off_t);
> ssize_t	 pwrite(int, const void *, size_t, off_t);
> #endif
> >>
> 
> This is POSIX.1-2001 conforming (but not POSIX.1-2008 conforming)
> implementation of unistd.h

Left over, noone did a full POSIX 2008 audit of the headers.

Joerg


Home | Main Index | Thread Index | Old Index