diff options
Diffstat (limited to 'gnulib/lib/fcntl.in.h')
-rw-r--r-- | gnulib/lib/fcntl.in.h | 71 |
1 files changed, 67 insertions, 4 deletions
diff --git a/gnulib/lib/fcntl.in.h b/gnulib/lib/fcntl.in.h index fd7520e8..cadb6a15 100644 --- a/gnulib/lib/fcntl.in.h +++ b/gnulib/lib/fcntl.in.h @@ -1,6 +1,6 @@ /* Like <fcntl.h>, but with non-working flags defined to 0. - Copyright (C) 2006-2008 Free Software Foundation, Inc. + Copyright (C) 2006-2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,6 +44,9 @@ #define _GL_FCNTL_H +/* The definition of GL_LINK_WARNING is copied here. */ + + /* Declare overridden functions. */ #ifdef __cplusplus @@ -58,15 +61,29 @@ extern int open (const char *filename, int flags, ...); # endif #endif -#ifdef FCHDIR_REPLACEMENT -/* gnulib internal function. */ -extern void _gl_register_fd (int fd, const char *filename); +#if @GNULIB_OPENAT@ +# if !@HAVE_OPENAT@ +# undef openat +# define openat rpl_openat +int openat (int fd, char const *file, int flags, /* mode_t mode */ ...); +# endif +#elif defined GNULIB_POSIXCHECK +# undef openat +# define openat(f,u,g) \ + (GL_LINK_WARNING ("openat is not portable - " \ + "use gnulib module openat for portability"), \ + openat) #endif #ifdef __cplusplus } #endif +/* Fix up the FD_* macros. */ + +#ifndef FD_CLOEXEC +# define FD_CLOEXEC 1 +#endif /* Fix up the O_* macros. */ @@ -75,6 +92,12 @@ extern void _gl_register_fd (int fd, const char *filename); # define O_DIRECT O_DIRECTIO #endif +#if !defined O_CLOEXEC && defined O_NOINHERIT +/* Mingw spells it `O_NOINHERIT'. Intentionally leave it + undefined if not available. */ +# define O_CLOEXEC O_NOINHERIT +#endif + #ifndef O_DIRECT # define O_DIRECT 0 #endif @@ -119,6 +142,10 @@ extern void _gl_register_fd (int fd, const char *filename); # define O_SYNC 0 #endif +#ifndef O_TTY_INIT +# define O_TTY_INIT 0 +#endif + /* For systems that distinguish between text and binary I/O. O_BINARY is usually declared in fcntl.h */ #if !defined O_BINARY && defined _O_BINARY @@ -138,6 +165,42 @@ extern void _gl_register_fd (int fd, const char *filename); # define O_TEXT 0 #endif +/* Fix up the AT_* macros. */ + +/* Work around a bug in Solaris 9 and 10: AT_FDCWD is positive. Its + value exceeds INT_MAX, so its use as an int doesn't conform to the + C standard, and GCC and Sun C complain in some cases. If the bug + is present, undef AT_FDCWD here, so it can be redefined below. */ +#if 0 < AT_FDCWD && AT_FDCWD == 0xffd19553 +# undef AT_FDCWD +#endif + +/* Use the same bit pattern as Solaris 9, but with the proper + signedness. The bit pattern is important, in case this actually is + Solaris with the above workaround. */ +#ifndef AT_FDCWD +# define AT_FDCWD (-3041965) +#endif + +/* Use the same values as Solaris 9. This shouldn't matter, but + there's no real reason to differ. */ +#ifndef AT_SYMLINK_NOFOLLOW +# define AT_SYMLINK_NOFOLLOW 4096 +#endif + +#ifndef AT_REMOVEDIR +# define AT_REMOVEDIR 1 +#endif + +/* Solaris 9 lacks these two, so just pick unique values. */ +#ifndef AT_SYMLINK_FOLLOW +# define AT_SYMLINK_FOLLOW 2 +#endif + +#ifndef AT_EACCESS +# define AT_EACCESS 4 +#endif + #endif /* _GL_FCNTL_H */ #endif /* _GL_FCNTL_H */ |