mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-08-16 01:22:18 +03:00
This fixes some porting problems discovered when testing the latest grep snapshot on AIX 7.1. I don't think if fixes any bugs in grep but it could be important for other applications. * doc/posix-functions/dup2.texi: * doc/posix-functions/fcntl.texi: * doc/posix-headers/fcntl.texi: Document AIX bugs. * lib/fcntl.in.h (O_CLOEXEC, O_NOFOLLOW, O_TTY_INIT) [_AIX]: Define to 0 if outside 'int' range. * m4/dup2.m4 (gl_FUNC_DUP2): * m4/fcntl.m4 (gl_FUNC_FCNTL): Check for getdtablesize. If it's available, test a value just outside its range instead of testing 1000000. When cross-compiling, guess that AIX will fail this improved test.
99 lines
3.0 KiB
Plaintext
99 lines
3.0 KiB
Plaintext
@node fcntl.h
|
|
@section @file{fcntl.h}
|
|
|
|
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html}
|
|
|
|
Gnulib module: fcntl-h
|
|
|
|
Portability problems fixed by Gnulib:
|
|
@itemize
|
|
@item
|
|
The type @code{pid_t} is not defined on some platforms:
|
|
MSVC 9.
|
|
|
|
@item
|
|
The type @code{mode_t} is not defined on some platforms:
|
|
MSVC 9.
|
|
|
|
@item
|
|
@samp{O_CLOEXEC}, @samp{O_DIRECTORY}, @samp{O_DSYNC}, @samp{O_NOCTTY},
|
|
@samp{O_NOFOLLOW}, @samp{O_RSYNC}, @samp{O_SYNC},
|
|
and @samp{O_TTY_INIT} are not defined on some platforms. Gnulib defines
|
|
these macros to 0, which is generally safe.
|
|
|
|
@item
|
|
@samp{O_NONBLOCK} is not defined on some platforms. If the
|
|
@samp{nonblocking} module is in use, gnulib guarantees a working
|
|
non-zero value; otherwise, the gnulib replacement is 0.
|
|
|
|
@item
|
|
@samp{O_EXEC} and @samp{O_SEARCH} are not defined on some platforms.
|
|
Gnulib defines these macros to @samp{O_RDONLY}, which is typically 0.
|
|
The @samp{O_PATH} macro of GNU/Linux is not a suitable substitute, as
|
|
fchmod fails with @samp{errno==EBADF} when invoked on a file
|
|
descriptor that was opened with @samp{O_PATH}.
|
|
|
|
@item
|
|
@samp{O_ACCMODE} is not defined on some platforms:
|
|
MSVC 9.
|
|
|
|
@item
|
|
The @samp{O_ACCMODE} mask mistakenly omits @samp{O_SEARCH} and
|
|
@samp{O_EXEC} on some platforms:
|
|
Cygwin.
|
|
|
|
@item
|
|
@samp{O_BINARY}, @samp{O_TEXT} (not specified by POSIX, but essential for
|
|
portability to native Windows platforms) are defined on some platforms but
|
|
not on others.
|
|
|
|
@item
|
|
@samp{O_CLOEXEC}, @samp{O_NOFOLLOW}, and @samp{O_TTY_INIT}
|
|
are defined to values that are too large for an @code{int} on some platforms:
|
|
AIX 7.1 with XL C 12.1.
|
|
|
|
@item
|
|
@samp{O_DIRECT}, @samp{O_IGNORE_CTTY}, @samp{O_NDELAY},
|
|
@samp{O_NOATIME}, @samp{O_NOLINK}, @samp{O_NOLINKS}, and
|
|
@samp{O_NOTRANS} (not specified by POSIX) are defined
|
|
on some platforms but not on others.
|
|
|
|
@item
|
|
@samp{FD_CLOEXEC}, @samp{F_DUPFD}, and @samp{F_GETFD} are not defined
|
|
on some platforms:
|
|
mingw, MSVC 9.
|
|
|
|
@item
|
|
@samp{F_DUPFD_CLOEXEC} is not defined on some platforms:
|
|
Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11,
|
|
IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin 1.7.1, mingw, MSVC 9, Interix 3.5,
|
|
BeOS.
|
|
|
|
@item
|
|
@samp{AT_FDCWD}, @samp{AT_EACCESS}, @samp{AT_SYMLINK_NOFOLLOW},
|
|
@samp{AT_SYMLINK_FOLLOW}, and @samp{AT_REMOVEDIR}
|
|
are not defined on many platforms:
|
|
glibc 2.3.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX
|
|
5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 8, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
|
|
|
|
@item
|
|
@samp{AT_FDCWD} is defined with a value too large for an @code{int} on some
|
|
platforms:
|
|
Solaris 11 2011-11.
|
|
@end itemize
|
|
|
|
Portability problems not fixed by Gnulib:
|
|
@itemize
|
|
@item
|
|
@samp{F_SETFD}, @samp{F_GETFL}, @samp{F_SETFL}, @samp{F_GETLK},
|
|
@samp{F_SETLK}, @samp{F_SETLKW}, @samp{F_GETOWN}, and @samp{F_SETOWN}
|
|
are not defined on some platforms:
|
|
mingw, MSVC 9.
|
|
|
|
@item
|
|
@samp{POSIX_FADV_DONTNEED}, @samp{POSIX_FADV_NOREUSE},
|
|
@samp{POSIX_FADV_NORMAL}, @samp{POSIX_FADV_RANDOM},
|
|
@samp{POSIX_FADV_SEQUENTIAL}, and @samp{POSIX_FADV_WILLNEED} are not
|
|
defined on some platforms.
|
|
@end itemize
|