Annotation of embedaddon/libiconv/srclib/fcntl.in.h, revision 1.1
1.1 ! misho 1: /* Like <fcntl.h>, but with non-working flags defined to 0.
! 2:
! 3: Copyright (C) 2006-2011 Free Software Foundation, Inc.
! 4:
! 5: This program is free software: you can redistribute it and/or modify
! 6: it under the terms of the GNU General Public License as published by
! 7: the Free Software Foundation; either version 3 of the License, or
! 8: (at your option) any later version.
! 9:
! 10: This program is distributed in the hope that it will be useful,
! 11: but WITHOUT ANY WARRANTY; without even the implied warranty of
! 12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 13: GNU General Public License for more details.
! 14:
! 15: You should have received a copy of the GNU General Public License
! 16: along with this program. If not, see <http://www.gnu.org/licenses/>. */
! 17:
! 18: /* written by Paul Eggert */
! 19:
! 20: #if __GNUC__ >= 3
! 21: @PRAGMA_SYSTEM_HEADER@
! 22: #endif
! 23: @PRAGMA_COLUMNS@
! 24:
! 25: #if defined __need_system_fcntl_h
! 26: /* Special invocation convention. */
! 27:
! 28: #include <sys/types.h>
! 29: /* On some systems other than glibc, <sys/stat.h> is a prerequisite of
! 30: <fcntl.h>. On glibc systems, we would like to avoid namespace pollution.
! 31: But on glibc systems, <fcntl.h> includes <sys/stat.h> inside an
! 32: extern "C" { ... } block, which leads to errors in C++ mode with the
! 33: overridden <sys/stat.h> from gnulib. These errors are known to be gone
! 34: with g++ version >= 4.3. */
! 35: #if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))
! 36: # include <sys/stat.h>
! 37: #endif
! 38: #@INCLUDE_NEXT@ @NEXT_FCNTL_H@
! 39:
! 40: #else
! 41: /* Normal invocation convention. */
! 42:
! 43: #ifndef _@GUARD_PREFIX@_FCNTL_H
! 44:
! 45: #include <sys/types.h>
! 46: /* On some systems other than glibc, <sys/stat.h> is a prerequisite of
! 47: <fcntl.h>. On glibc systems, we would like to avoid namespace pollution.
! 48: But on glibc systems, <fcntl.h> includes <sys/stat.h> inside an
! 49: extern "C" { ... } block, which leads to errors in C++ mode with the
! 50: overridden <sys/stat.h> from gnulib. These errors are known to be gone
! 51: with g++ version >= 4.3. */
! 52: #if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))
! 53: # include <sys/stat.h>
! 54: #endif
! 55: /* The include_next requires a split double-inclusion guard. */
! 56: #@INCLUDE_NEXT@ @NEXT_FCNTL_H@
! 57:
! 58: #ifndef _@GUARD_PREFIX@_FCNTL_H
! 59: #define _@GUARD_PREFIX@_FCNTL_H
! 60:
! 61: #ifndef __GLIBC__ /* Avoid namespace pollution on glibc systems. */
! 62: # include <unistd.h>
! 63: #endif
! 64:
! 65:
! 66: /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
! 67:
! 68: /* The definition of _GL_ARG_NONNULL is copied here. */
! 69:
! 70: /* The definition of _GL_WARN_ON_USE is copied here. */
! 71:
! 72:
! 73: /* Declare overridden functions. */
! 74:
! 75: #if @GNULIB_FCNTL@
! 76: # if @REPLACE_FCNTL@
! 77: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 78: # undef fcntl
! 79: # define fcntl rpl_fcntl
! 80: # endif
! 81: _GL_FUNCDECL_RPL (fcntl, int, (int fd, int action, ...));
! 82: _GL_CXXALIAS_RPL (fcntl, int, (int fd, int action, ...));
! 83: # else
! 84: # if !@HAVE_FCNTL@
! 85: _GL_FUNCDECL_SYS (fcntl, int, (int fd, int action, ...));
! 86: # endif
! 87: _GL_CXXALIAS_SYS (fcntl, int, (int fd, int action, ...));
! 88: # endif
! 89: _GL_CXXALIASWARN (fcntl);
! 90: #elif defined GNULIB_POSIXCHECK
! 91: # undef fcntl
! 92: # if HAVE_RAW_DECL_FCNTL
! 93: _GL_WARN_ON_USE (fcntl, "fcntl is not always POSIX compliant - "
! 94: "use gnulib module fcntl for portability");
! 95: # endif
! 96: #endif
! 97:
! 98: #if @GNULIB_OPEN@
! 99: # if @REPLACE_OPEN@
! 100: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 101: # undef open
! 102: # define open rpl_open
! 103: # endif
! 104: _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
! 105: _GL_ARG_NONNULL ((1)));
! 106: _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
! 107: # else
! 108: _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
! 109: # endif
! 110: /* On HP-UX 11, in C++ mode, open() is defined as an inline function with a
! 111: default argument. _GL_CXXALIASWARN does not work in this case. */
! 112: # if !defined __hpux
! 113: _GL_CXXALIASWARN (open);
! 114: # endif
! 115: #elif defined GNULIB_POSIXCHECK
! 116: # undef open
! 117: /* Assume open is always declared. */
! 118: _GL_WARN_ON_USE (open, "open is not always POSIX compliant - "
! 119: "use gnulib module open for portability");
! 120: #endif
! 121:
! 122: #if @GNULIB_OPENAT@
! 123: # if @REPLACE_OPENAT@
! 124: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 125: # undef openat
! 126: # define openat rpl_openat
! 127: # endif
! 128: _GL_FUNCDECL_RPL (openat, int,
! 129: (int fd, char const *file, int flags, /* mode_t mode */ ...)
! 130: _GL_ARG_NONNULL ((2)));
! 131: _GL_CXXALIAS_RPL (openat, int,
! 132: (int fd, char const *file, int flags, /* mode_t mode */ ...));
! 133: # else
! 134: # if !@HAVE_OPENAT@
! 135: _GL_FUNCDECL_SYS (openat, int,
! 136: (int fd, char const *file, int flags, /* mode_t mode */ ...)
! 137: _GL_ARG_NONNULL ((2)));
! 138: # endif
! 139: _GL_CXXALIAS_SYS (openat, int,
! 140: (int fd, char const *file, int flags, /* mode_t mode */ ...));
! 141: # endif
! 142: _GL_CXXALIASWARN (openat);
! 143: #elif defined GNULIB_POSIXCHECK
! 144: # undef openat
! 145: # if HAVE_RAW_DECL_OPENAT
! 146: _GL_WARN_ON_USE (openat, "openat is not portable - "
! 147: "use gnulib module openat for portability");
! 148: # endif
! 149: #endif
! 150:
! 151:
! 152: /* Fix up the FD_* macros, only known to be missing on mingw. */
! 153:
! 154: #ifndef FD_CLOEXEC
! 155: # define FD_CLOEXEC 1
! 156: #endif
! 157:
! 158: /* Fix up the supported F_* macros. Intentionally leave other F_*
! 159: macros undefined. Only known to be missing on mingw. */
! 160:
! 161: #ifndef F_DUPFD_CLOEXEC
! 162: # define F_DUPFD_CLOEXEC 0x40000000
! 163: /* Witness variable: 1 if gnulib defined F_DUPFD_CLOEXEC, 0 otherwise. */
! 164: # define GNULIB_defined_F_DUPFD_CLOEXEC 1
! 165: #else
! 166: # define GNULIB_defined_F_DUPFD_CLOEXEC 0
! 167: #endif
! 168:
! 169: #ifndef F_DUPFD
! 170: # define F_DUPFD 1
! 171: #endif
! 172:
! 173: #ifndef F_GETFD
! 174: # define F_GETFD 2
! 175: #endif
! 176:
! 177: /* Fix up the O_* macros. */
! 178:
! 179: #if !defined O_DIRECT && defined O_DIRECTIO
! 180: /* Tru64 spells it `O_DIRECTIO'. */
! 181: # define O_DIRECT O_DIRECTIO
! 182: #endif
! 183:
! 184: #if !defined O_CLOEXEC && defined O_NOINHERIT
! 185: /* Mingw spells it `O_NOINHERIT'. */
! 186: # define O_CLOEXEC O_NOINHERIT
! 187: #endif
! 188:
! 189: #ifndef O_CLOEXEC
! 190: # define O_CLOEXEC 0
! 191: #endif
! 192:
! 193: #ifndef O_DIRECT
! 194: # define O_DIRECT 0
! 195: #endif
! 196:
! 197: #ifndef O_DIRECTORY
! 198: # define O_DIRECTORY 0
! 199: #endif
! 200:
! 201: #ifndef O_DSYNC
! 202: # define O_DSYNC 0
! 203: #endif
! 204:
! 205: #ifndef O_EXEC
! 206: # define O_EXEC O_RDONLY /* This is often close enough in older systems. */
! 207: #endif
! 208:
! 209: #ifndef O_NDELAY
! 210: # define O_NDELAY 0
! 211: #endif
! 212:
! 213: #ifndef O_NOATIME
! 214: # define O_NOATIME 0
! 215: #endif
! 216:
! 217: #ifndef O_NONBLOCK
! 218: # define O_NONBLOCK O_NDELAY
! 219: #endif
! 220:
! 221: /* If the gnulib module 'nonblocking' is in use, guarantee a working non-zero
! 222: value of O_NONBLOCK. Otherwise, O_NONBLOCK is defined (above) to O_NDELAY
! 223: or to 0 as fallback. */
! 224: #if @GNULIB_NONBLOCKING@
! 225: # if O_NONBLOCK
! 226: # define GNULIB_defined_O_NONBLOCK 0
! 227: # else
! 228: # define GNULIB_defined_O_NONBLOCK 1
! 229: # undef O_NONBLOCK
! 230: # define O_NONBLOCK 0x40000000
! 231: # endif
! 232: #endif
! 233:
! 234: #ifndef O_NOCTTY
! 235: # define O_NOCTTY 0
! 236: #endif
! 237:
! 238: #ifndef O_NOFOLLOW
! 239: # define O_NOFOLLOW 0
! 240: #endif
! 241:
! 242: #ifndef O_NOLINKS
! 243: # define O_NOLINKS 0
! 244: #endif
! 245:
! 246: #ifndef O_RSYNC
! 247: # define O_RSYNC 0
! 248: #endif
! 249:
! 250: #ifndef O_SEARCH
! 251: # define O_SEARCH O_RDONLY /* This is often close enough in older systems. */
! 252: #endif
! 253:
! 254: #ifndef O_SYNC
! 255: # define O_SYNC 0
! 256: #endif
! 257:
! 258: #ifndef O_TTY_INIT
! 259: # define O_TTY_INIT 0
! 260: #endif
! 261:
! 262: #if O_ACCMODE != (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH)
! 263: # undef O_ACCMODE
! 264: # define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH)
! 265: #endif
! 266:
! 267: /* For systems that distinguish between text and binary I/O.
! 268: O_BINARY is usually declared in fcntl.h */
! 269: #if !defined O_BINARY && defined _O_BINARY
! 270: /* For MSC-compatible compilers. */
! 271: # define O_BINARY _O_BINARY
! 272: # define O_TEXT _O_TEXT
! 273: #endif
! 274:
! 275: #if defined __BEOS__ || defined __HAIKU__
! 276: /* BeOS 5 and Haiku have O_BINARY and O_TEXT, but they have no effect. */
! 277: # undef O_BINARY
! 278: # undef O_TEXT
! 279: #endif
! 280:
! 281: #ifndef O_BINARY
! 282: # define O_BINARY 0
! 283: # define O_TEXT 0
! 284: #endif
! 285:
! 286: /* Fix up the AT_* macros. */
! 287:
! 288: /* Work around a bug in Solaris 9 and 10: AT_FDCWD is positive. Its
! 289: value exceeds INT_MAX, so its use as an int doesn't conform to the
! 290: C standard, and GCC and Sun C complain in some cases. If the bug
! 291: is present, undef AT_FDCWD here, so it can be redefined below. */
! 292: #if 0 < AT_FDCWD && AT_FDCWD == 0xffd19553
! 293: # undef AT_FDCWD
! 294: #endif
! 295:
! 296: /* Use the same bit pattern as Solaris 9, but with the proper
! 297: signedness. The bit pattern is important, in case this actually is
! 298: Solaris with the above workaround. */
! 299: #ifndef AT_FDCWD
! 300: # define AT_FDCWD (-3041965)
! 301: #endif
! 302:
! 303: /* Use the same values as Solaris 9. This shouldn't matter, but
! 304: there's no real reason to differ. */
! 305: #ifndef AT_SYMLINK_NOFOLLOW
! 306: # define AT_SYMLINK_NOFOLLOW 4096
! 307: #endif
! 308:
! 309: #ifndef AT_REMOVEDIR
! 310: # define AT_REMOVEDIR 1
! 311: #endif
! 312:
! 313: /* Solaris 9 lacks these two, so just pick unique values. */
! 314: #ifndef AT_SYMLINK_FOLLOW
! 315: # define AT_SYMLINK_FOLLOW 2
! 316: #endif
! 317:
! 318: #ifndef AT_EACCESS
! 319: # define AT_EACCESS 4
! 320: #endif
! 321:
! 322:
! 323: #endif /* _@GUARD_PREFIX@_FCNTL_H */
! 324: #endif /* _@GUARD_PREFIX@_FCNTL_H */
! 325: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>