annotate lib/fcntl.in.h @ 40190:ef116535bf1a

relocatable-prog: Use $ORIGIN trick on more platforms. * m4/relocatable.m4 (gl_RELOCATABLE_BODY): Use $ORIGIN trick also on FreeBSD >= 7.3, DragonFly >= 3.0, NetBSD >= 8.0, OpenBSD >= 5.4, Solaris >= 10, Haiku. But don't use it on Android. * build-aux/reloc-ldflags: Allow the use of the $ORIGIN trick also on Hurd, FreeBSD, DragonFly, NetBSD, OpenBSD, Solaris, Haiku.
author Bruno Haible <bruno@clisp.org>
date Wed, 20 Feb 2019 02:39:52 +0100
parents b06060465f09
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
1 /* Like <fcntl.h>, but with non-working flags defined to 0.
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
2
40057
b06060465f09 maint: Run 'make update-copyright'
Paul Eggert <eggert@cs.ucla.edu>
parents: 19595
diff changeset
3 Copyright (C) 2006-2019 Free Software Foundation, Inc.
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
4
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9299
diff changeset
5 This program is free software: you can redistribute it and/or modify
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
6 it under the terms of the GNU General Public License as published by
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9299
diff changeset
7 the Free Software Foundation; either version 3 of the License, or
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9299
diff changeset
8 (at your option) any later version.
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
9
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
10 This program is distributed in the hope that it will be useful,
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
13 GNU General Public License for more details.
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
14
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
19190
9759915b2aca all: prefer https: URLs
Paul Eggert <eggert@cs.ucla.edu>
parents: 19052
diff changeset
16 along with this program. If not, see <https://www.gnu.org/licenses/>. */
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
17
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
18 /* written by Paul Eggert */
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
19
10655
8668b19a7032 Avoid gcc warnings because of #pragma GCC system_header on older gcc.
Bruno Haible <bruno@clisp.org>
parents: 10608
diff changeset
20 #if __GNUC__ >= 3
10533
d4b37870fdc9 Override open more carefully.
Bruno Haible <bruno@clisp.org>
parents: 10528
diff changeset
21 @PRAGMA_SYSTEM_HEADER@
10655
8668b19a7032 Avoid gcc warnings because of #pragma GCC system_header on older gcc.
Bruno Haible <bruno@clisp.org>
parents: 10608
diff changeset
22 #endif
13761
a19ace3ba849 Avoid line length limitation from HP NonStop system header files.
Bruno Haible <bruno@clisp.org>
parents: 13664
diff changeset
23 @PRAGMA_COLUMNS@
10533
d4b37870fdc9 Override open more carefully.
Bruno Haible <bruno@clisp.org>
parents: 10528
diff changeset
24
d4b37870fdc9 Override open more carefully.
Bruno Haible <bruno@clisp.org>
parents: 10528
diff changeset
25 #if defined __need_system_fcntl_h
d4b37870fdc9 Override open more carefully.
Bruno Haible <bruno@clisp.org>
parents: 10528
diff changeset
26 /* Special invocation convention. */
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
27
16795
6a9ea5d7b466 Large File Support for native Windows platforms.
Bruno Haible <bruno@clisp.org>
parents: 16284
diff changeset
28 /* Needed before <sys/stat.h>.
6a9ea5d7b466 Large File Support for native Windows platforms.
Bruno Haible <bruno@clisp.org>
parents: 16284
diff changeset
29 May also define off_t to a 64-bit type on native Windows. */
10533
d4b37870fdc9 Override open more carefully.
Bruno Haible <bruno@clisp.org>
parents: 10528
diff changeset
30 #include <sys/types.h>
13851
a518692b40d4 fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13761
diff changeset
31 /* On some systems other than glibc, <sys/stat.h> is a prerequisite of
a518692b40d4 fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13761
diff changeset
32 <fcntl.h>. On glibc systems, we would like to avoid namespace pollution.
a518692b40d4 fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13761
diff changeset
33 But on glibc systems, <fcntl.h> includes <sys/stat.h> inside an
a518692b40d4 fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13761
diff changeset
34 extern "C" { ... } block, which leads to errors in C++ mode with the
a518692b40d4 fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13761
diff changeset
35 overridden <sys/stat.h> from gnulib. These errors are known to be gone
a518692b40d4 fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13761
diff changeset
36 with g++ version >= 4.3. */
17758
619c14b4271c fcntl-h: fix compilation with Intel C++ compiler
Johannes Zarl <johannes.zarl@jku.at>
parents: 17688
diff changeset
37 #if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && (defined __ICC || !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))))
12491
ad883448fbdf Reduce namespace pollution on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 12456
diff changeset
38 # include <sys/stat.h>
ad883448fbdf Reduce namespace pollution on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 12456
diff changeset
39 #endif
10533
d4b37870fdc9 Override open more carefully.
Bruno Haible <bruno@clisp.org>
parents: 10528
diff changeset
40 #@INCLUDE_NEXT@ @NEXT_FCNTL_H@
d4b37870fdc9 Override open more carefully.
Bruno Haible <bruno@clisp.org>
parents: 10528
diff changeset
41
d4b37870fdc9 Override open more carefully.
Bruno Haible <bruno@clisp.org>
parents: 10528
diff changeset
42 #else
d4b37870fdc9 Override open more carefully.
Bruno Haible <bruno@clisp.org>
parents: 10528
diff changeset
43 /* Normal invocation convention. */
d4b37870fdc9 Override open more carefully.
Bruno Haible <bruno@clisp.org>
parents: 10528
diff changeset
44
14840
5f709022a256 Allow multiple gnulib generated include files to be combined.
Bruno Haible <bruno@clisp.org>
parents: 14591
diff changeset
45 #ifndef _@GUARD_PREFIX@_FCNTL_H
10375
f96e845fc36d Avoid some "gcc -pedantic" warnings.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
46
16795
6a9ea5d7b466 Large File Support for native Windows platforms.
Bruno Haible <bruno@clisp.org>
parents: 16284
diff changeset
47 /* Needed before <sys/stat.h>.
6a9ea5d7b466 Large File Support for native Windows platforms.
Bruno Haible <bruno@clisp.org>
parents: 16284
diff changeset
48 May also define off_t to a 64-bit type on native Windows. */
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
49 #include <sys/types.h>
14024
872c921488fd fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13885
diff changeset
50 /* On some systems other than glibc, <sys/stat.h> is a prerequisite of
872c921488fd fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13885
diff changeset
51 <fcntl.h>. On glibc systems, we would like to avoid namespace pollution.
872c921488fd fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13885
diff changeset
52 But on glibc systems, <fcntl.h> includes <sys/stat.h> inside an
872c921488fd fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13885
diff changeset
53 extern "C" { ... } block, which leads to errors in C++ mode with the
872c921488fd fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13885
diff changeset
54 overridden <sys/stat.h> from gnulib. These errors are known to be gone
872c921488fd fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13885
diff changeset
55 with g++ version >= 4.3. */
17758
619c14b4271c fcntl-h: fix compilation with Intel C++ compiler
Johannes Zarl <johannes.zarl@jku.at>
parents: 17688
diff changeset
56 #if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && (defined __ICC || !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))))
12491
ad883448fbdf Reduce namespace pollution on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 12456
diff changeset
57 # include <sys/stat.h>
ad883448fbdf Reduce namespace pollution on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 12456
diff changeset
58 #endif
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
59 /* The include_next requires a split double-inclusion guard. */
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
60 #@INCLUDE_NEXT@ @NEXT_FCNTL_H@
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
61
14840
5f709022a256 Allow multiple gnulib generated include files to be combined.
Bruno Haible <bruno@clisp.org>
parents: 14591
diff changeset
62 #ifndef _@GUARD_PREFIX@_FCNTL_H
5f709022a256 Allow multiple gnulib generated include files to be combined.
Bruno Haible <bruno@clisp.org>
parents: 14591
diff changeset
63 #define _@GUARD_PREFIX@_FCNTL_H
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
64
12763
4418796e7e4a Avoid compilation error with cc on OSF/1 5.1.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
65 #ifndef __GLIBC__ /* Avoid namespace pollution on glibc systems. */
4418796e7e4a Avoid compilation error with cc on OSF/1 5.1.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
66 # include <unistd.h>
4418796e7e4a Avoid compilation error with cc on OSF/1 5.1.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
67 #endif
4418796e7e4a Avoid compilation error with cc on OSF/1 5.1.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
68
16284
ab517781f037 Improve support for MSVC 9.
Bruno Haible <bruno@clisp.org>
parents: 16235
diff changeset
69 /* Native Windows platforms declare open(), creat() in <io.h>. */
ab517781f037 Improve support for MSVC 9.
Bruno Haible <bruno@clisp.org>
parents: 16235
diff changeset
70 #if (@GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \
19595
beb2ad957aca Simplify code. Drop support for Borland C++ on Windows.
Bruno Haible <bruno@clisp.org>
parents: 19484
diff changeset
71 && (defined _WIN32 && ! defined __CYGWIN__)
16284
ab517781f037 Improve support for MSVC 9.
Bruno Haible <bruno@clisp.org>
parents: 16235
diff changeset
72 # include <io.h>
ab517781f037 Improve support for MSVC 9.
Bruno Haible <bruno@clisp.org>
parents: 16235
diff changeset
73 #endif
ab517781f037 Improve support for MSVC 9.
Bruno Haible <bruno@clisp.org>
parents: 16235
diff changeset
74
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
75
12931
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
76 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
77
12766
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
78 /* The definition of _GL_ARG_NONNULL is copied here. */
11942
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
79
12766
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
80 /* The definition of _GL_WARN_ON_USE is copied here. */
12422
f7842310a565 New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents: 12047
diff changeset
81
11942
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
82
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
83 /* Declare overridden functions. */
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
84
12454
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
85 #if @GNULIB_FCNTL@
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
86 # if @REPLACE_FCNTL@
12931
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
87 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
88 # undef fcntl
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
89 # define fcntl rpl_fcntl
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
90 # endif
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
91 _GL_FUNCDECL_RPL (fcntl, int, (int fd, int action, ...));
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
92 _GL_CXXALIAS_RPL (fcntl, int, (int fd, int action, ...));
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
93 # else
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
94 # if !@HAVE_FCNTL@
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
95 _GL_FUNCDECL_SYS (fcntl, int, (int fd, int action, ...));
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
96 # endif
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
97 _GL_CXXALIAS_SYS (fcntl, int, (int fd, int action, ...));
12456
f3aceada3c52 fcntl: port portions of fcntl to mingw
Eric Blake <ebb9@byu.net>
parents: 12454
diff changeset
98 # endif
12931
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
99 _GL_CXXALIASWARN (fcntl);
12454
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
100 #elif defined GNULIB_POSIXCHECK
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
101 # undef fcntl
12766
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
102 # if HAVE_RAW_DECL_FCNTL
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
103 _GL_WARN_ON_USE (fcntl, "fcntl is not always POSIX compliant - "
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
104 "use gnulib module fcntl for portability");
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
105 # endif
12454
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
106 #endif
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
107
10608
9559d8f05cdb Merge the two replacements for open() into a single one.
Paolo Bonzini <bonzini@gnu.org>
parents: 10533
diff changeset
108 #if @GNULIB_OPEN@
9559d8f05cdb Merge the two replacements for open() into a single one.
Paolo Bonzini <bonzini@gnu.org>
parents: 10533
diff changeset
109 # if @REPLACE_OPEN@
12931
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
110 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
111 # undef open
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
112 # define open rpl_open
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
113 # endif
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
114 _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
115 _GL_ARG_NONNULL ((1)));
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
116 _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
117 # else
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
118 _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
10608
9559d8f05cdb Merge the two replacements for open() into a single one.
Paolo Bonzini <bonzini@gnu.org>
parents: 10533
diff changeset
119 # endif
14058
4b44ba76787f open: Avoid C++ error on HP-UX 11.
Bruno Haible <bruno@clisp.org>
parents: 14024
diff changeset
120 /* On HP-UX 11, in C++ mode, open() is defined as an inline function with a
4b44ba76787f open: Avoid C++ error on HP-UX 11.
Bruno Haible <bruno@clisp.org>
parents: 14024
diff changeset
121 default argument. _GL_CXXALIASWARN does not work in this case. */
4b44ba76787f open: Avoid C++ error on HP-UX 11.
Bruno Haible <bruno@clisp.org>
parents: 14024
diff changeset
122 # if !defined __hpux
12931
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
123 _GL_CXXALIASWARN (open);
14058
4b44ba76787f open: Avoid C++ error on HP-UX 11.
Bruno Haible <bruno@clisp.org>
parents: 14024
diff changeset
124 # endif
12451
419d4e1a3d41 fcntl-h, stdio, sys_ioctl: fix declarations
Eric Blake <ebb9@byu.net>
parents: 12422
diff changeset
125 #elif defined GNULIB_POSIXCHECK
419d4e1a3d41 fcntl-h, stdio, sys_ioctl: fix declarations
Eric Blake <ebb9@byu.net>
parents: 12422
diff changeset
126 # undef open
12766
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
127 /* Assume open is always declared. */
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
128 _GL_WARN_ON_USE (open, "open is not always POSIX compliant - "
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
129 "use gnulib module open for portability");
10608
9559d8f05cdb Merge the two replacements for open() into a single one.
Paolo Bonzini <bonzini@gnu.org>
parents: 10533
diff changeset
130 #endif
9559d8f05cdb Merge the two replacements for open() into a single one.
Paolo Bonzini <bonzini@gnu.org>
parents: 10533
diff changeset
131
11942
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
132 #if @GNULIB_OPENAT@
12047
21ec8b9a3f27 openat: fix openat bugs on Solaris 9
Eric Blake <ebb9@byu.net>
parents: 11945
diff changeset
133 # if @REPLACE_OPENAT@
12931
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
134 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
135 # undef openat
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
136 # define openat rpl_openat
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
137 # endif
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
138 _GL_FUNCDECL_RPL (openat, int,
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
139 (int fd, char const *file, int flags, /* mode_t mode */ ...)
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
140 _GL_ARG_NONNULL ((2)));
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
141 _GL_CXXALIAS_RPL (openat, int,
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
142 (int fd, char const *file, int flags, /* mode_t mode */ ...));
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
143 # else
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
144 # if !@HAVE_OPENAT@
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
145 _GL_FUNCDECL_SYS (openat, int,
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
146 (int fd, char const *file, int flags, /* mode_t mode */ ...)
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
147 _GL_ARG_NONNULL ((2)));
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
148 # endif
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
149 _GL_CXXALIAS_SYS (openat, int,
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
150 (int fd, char const *file, int flags, /* mode_t mode */ ...));
12047
21ec8b9a3f27 openat: fix openat bugs on Solaris 9
Eric Blake <ebb9@byu.net>
parents: 11945
diff changeset
151 # endif
12931
82b0c98fe7aa fcntl-h: Avoid #define replacements in C++ mode.
Bruno Haible <bruno@clisp.org>
parents: 12766
diff changeset
152 _GL_CXXALIASWARN (openat);
11942
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
153 #elif defined GNULIB_POSIXCHECK
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
154 # undef openat
12766
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
155 # if HAVE_RAW_DECL_OPENAT
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
156 _GL_WARN_ON_USE (openat, "openat is not portable - "
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
157 "use gnulib module openat for portability");
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12763
diff changeset
158 # endif
11942
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
159 #endif
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
160
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
161
12456
f3aceada3c52 fcntl: port portions of fcntl to mingw
Eric Blake <ebb9@byu.net>
parents: 12454
diff changeset
162 /* Fix up the FD_* macros, only known to be missing on mingw. */
11859
27f6d88f60b1 Move more flags to lib/fcntl.in.h.
Paolo Bonzini <bonzini@gnu.org>
parents: 10778
diff changeset
163
27f6d88f60b1 Move more flags to lib/fcntl.in.h.
Paolo Bonzini <bonzini@gnu.org>
parents: 10778
diff changeset
164 #ifndef FD_CLOEXEC
27f6d88f60b1 Move more flags to lib/fcntl.in.h.
Paolo Bonzini <bonzini@gnu.org>
parents: 10778
diff changeset
165 # define FD_CLOEXEC 1
27f6d88f60b1 Move more flags to lib/fcntl.in.h.
Paolo Bonzini <bonzini@gnu.org>
parents: 10778
diff changeset
166 #endif
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
167
12454
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
168 /* Fix up the supported F_* macros. Intentionally leave other F_*
12456
f3aceada3c52 fcntl: port portions of fcntl to mingw
Eric Blake <ebb9@byu.net>
parents: 12454
diff changeset
169 macros undefined. Only known to be missing on mingw. */
12454
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
170
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
171 #ifndef F_DUPFD_CLOEXEC
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
172 # define F_DUPFD_CLOEXEC 0x40000000
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
173 /* Witness variable: 1 if gnulib defined F_DUPFD_CLOEXEC, 0 otherwise. */
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
174 # define GNULIB_defined_F_DUPFD_CLOEXEC 1
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
175 #else
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
176 # define GNULIB_defined_F_DUPFD_CLOEXEC 0
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
177 #endif
f7624052e60d fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake <ebb9@byu.net>
parents: 12451
diff changeset
178
12456
f3aceada3c52 fcntl: port portions of fcntl to mingw
Eric Blake <ebb9@byu.net>
parents: 12454
diff changeset
179 #ifndef F_DUPFD
f3aceada3c52 fcntl: port portions of fcntl to mingw
Eric Blake <ebb9@byu.net>
parents: 12454
diff changeset
180 # define F_DUPFD 1
f3aceada3c52 fcntl: port portions of fcntl to mingw
Eric Blake <ebb9@byu.net>
parents: 12454
diff changeset
181 #endif
f3aceada3c52 fcntl: port portions of fcntl to mingw
Eric Blake <ebb9@byu.net>
parents: 12454
diff changeset
182
f3aceada3c52 fcntl: port portions of fcntl to mingw
Eric Blake <ebb9@byu.net>
parents: 12454
diff changeset
183 #ifndef F_GETFD
f3aceada3c52 fcntl: port portions of fcntl to mingw
Eric Blake <ebb9@byu.net>
parents: 12454
diff changeset
184 # define F_GETFD 2
f3aceada3c52 fcntl: port portions of fcntl to mingw
Eric Blake <ebb9@byu.net>
parents: 12454
diff changeset
185 #endif
f3aceada3c52 fcntl: port portions of fcntl to mingw
Eric Blake <ebb9@byu.net>
parents: 12454
diff changeset
186
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
187 /* Fix up the O_* macros. */
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
188
17688
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
189 /* AIX 7.1 with XL C 12.1 defines O_CLOEXEC, O_NOFOLLOW, and O_TTY_INIT
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
190 to values outside 'int' range, so omit these misdefinitions.
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
191 But avoid namespace pollution on non-AIX systems. */
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
192 #ifdef _AIX
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
193 # include <limits.h>
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
194 # if defined O_CLOEXEC && ! (INT_MIN <= O_CLOEXEC && O_CLOEXEC <= INT_MAX)
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
195 # undef O_CLOEXEC
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
196 # endif
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
197 # if defined O_NOFOLLOW && ! (INT_MIN <= O_NOFOLLOW && O_NOFOLLOW <= INT_MAX)
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
198 # undef O_NOFOLLOW
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
199 # endif
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
200 # if defined O_TTY_INIT && ! (INT_MIN <= O_TTY_INIT && O_TTY_INIT <= INT_MAX)
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
201 # undef O_TTY_INIT
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
202 # endif
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
203 #endif
0d3cc0db9cb7 dup2, fcntl, fcntl-h: port to AIX 7.1
Paul Eggert <eggert@cs.ucla.edu>
parents: 17576
diff changeset
204
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
205 #if !defined O_DIRECT && defined O_DIRECTIO
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16201
diff changeset
206 /* Tru64 spells it 'O_DIRECTIO'. */
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
207 # define O_DIRECT O_DIRECTIO
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
208 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
209
11859
27f6d88f60b1 Move more flags to lib/fcntl.in.h.
Paolo Bonzini <bonzini@gnu.org>
parents: 10778
diff changeset
210 #if !defined O_CLOEXEC && defined O_NOINHERIT
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16201
diff changeset
211 /* Mingw spells it 'O_NOINHERIT'. */
11859
27f6d88f60b1 Move more flags to lib/fcntl.in.h.
Paolo Bonzini <bonzini@gnu.org>
parents: 10778
diff changeset
212 # define O_CLOEXEC O_NOINHERIT
27f6d88f60b1 Move more flags to lib/fcntl.in.h.
Paolo Bonzini <bonzini@gnu.org>
parents: 10778
diff changeset
213 #endif
27f6d88f60b1 Move more flags to lib/fcntl.in.h.
Paolo Bonzini <bonzini@gnu.org>
parents: 10778
diff changeset
214
13664
241057e2e60f fcntl-h: define O_CLOEXEC and O_EXEC if not defined; use new defines
Paul Eggert <eggert@cs.ucla.edu>
parents: 13616
diff changeset
215 #ifndef O_CLOEXEC
19052
637f3a63efbd open: support O_CLOEXEC
Paul Eggert <eggert@cs.ucla.edu>
parents: 18626
diff changeset
216 # define O_CLOEXEC 0x40000000 /* Try to not collide with system O_* flags. */
637f3a63efbd open: support O_CLOEXEC
Paul Eggert <eggert@cs.ucla.edu>
parents: 18626
diff changeset
217 # define GNULIB_defined_O_CLOEXEC 1
637f3a63efbd open: support O_CLOEXEC
Paul Eggert <eggert@cs.ucla.edu>
parents: 18626
diff changeset
218 #else
637f3a63efbd open: support O_CLOEXEC
Paul Eggert <eggert@cs.ucla.edu>
parents: 18626
diff changeset
219 # define GNULIB_defined_O_CLOEXEC 0
13664
241057e2e60f fcntl-h: define O_CLOEXEC and O_EXEC if not defined; use new defines
Paul Eggert <eggert@cs.ucla.edu>
parents: 13616
diff changeset
220 #endif
241057e2e60f fcntl-h: define O_CLOEXEC and O_EXEC if not defined; use new defines
Paul Eggert <eggert@cs.ucla.edu>
parents: 13616
diff changeset
221
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
222 #ifndef O_DIRECT
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
223 # define O_DIRECT 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
224 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
225
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
226 #ifndef O_DIRECTORY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
227 # define O_DIRECTORY 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
228 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
229
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
230 #ifndef O_DSYNC
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
231 # define O_DSYNC 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
232 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
233
13664
241057e2e60f fcntl-h: define O_CLOEXEC and O_EXEC if not defined; use new defines
Paul Eggert <eggert@cs.ucla.edu>
parents: 13616
diff changeset
234 #ifndef O_EXEC
17152
22b1a8f00587 fcntl-h: default O_SEARCH, O_EXEC back to O_RDONLY
Paul Eggert <eggert@cs.ucla.edu>
parents: 17148
diff changeset
235 # define O_EXEC O_RDONLY /* This is often close enough in older systems. */
13664
241057e2e60f fcntl-h: define O_CLOEXEC and O_EXEC if not defined; use new defines
Paul Eggert <eggert@cs.ucla.edu>
parents: 13616
diff changeset
236 #endif
241057e2e60f fcntl-h: define O_CLOEXEC and O_EXEC if not defined; use new defines
Paul Eggert <eggert@cs.ucla.edu>
parents: 13616
diff changeset
237
17135
3ae14a5da4df fcntl-h: support GNU flags like O_IGNORE_CTTY
Paul Eggert <eggert@cs.ucla.edu>
parents: 16795
diff changeset
238 #ifndef O_IGNORE_CTTY
3ae14a5da4df fcntl-h: support GNU flags like O_IGNORE_CTTY
Paul Eggert <eggert@cs.ucla.edu>
parents: 16795
diff changeset
239 # define O_IGNORE_CTTY 0
3ae14a5da4df fcntl-h: support GNU flags like O_IGNORE_CTTY
Paul Eggert <eggert@cs.ucla.edu>
parents: 16795
diff changeset
240 #endif
3ae14a5da4df fcntl-h: support GNU flags like O_IGNORE_CTTY
Paul Eggert <eggert@cs.ucla.edu>
parents: 16795
diff changeset
241
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
242 #ifndef O_NDELAY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
243 # define O_NDELAY 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
244 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
245
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
246 #ifndef O_NOATIME
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
247 # define O_NOATIME 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
248 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
249
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
250 #ifndef O_NONBLOCK
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
251 # define O_NONBLOCK O_NDELAY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
252 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
253
14591
a5714f0caebd nonblocking: Add comment.
Bruno Haible <bruno@clisp.org>
parents: 14534
diff changeset
254 /* If the gnulib module 'nonblocking' is in use, guarantee a working non-zero
a5714f0caebd nonblocking: Add comment.
Bruno Haible <bruno@clisp.org>
parents: 14534
diff changeset
255 value of O_NONBLOCK. Otherwise, O_NONBLOCK is defined (above) to O_NDELAY
a5714f0caebd nonblocking: Add comment.
Bruno Haible <bruno@clisp.org>
parents: 14534
diff changeset
256 or to 0 as fallback. */
14532
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
257 #if @GNULIB_NONBLOCKING@
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
258 # if O_NONBLOCK
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
259 # define GNULIB_defined_O_NONBLOCK 0
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
260 # else
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
261 # define GNULIB_defined_O_NONBLOCK 1
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
262 # undef O_NONBLOCK
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
263 # define O_NONBLOCK 0x40000000
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
264 # endif
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
265 #endif
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
266
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
267 #ifndef O_NOCTTY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
268 # define O_NOCTTY 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
269 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
270
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
271 #ifndef O_NOFOLLOW
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
272 # define O_NOFOLLOW 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
273 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
274
17135
3ae14a5da4df fcntl-h: support GNU flags like O_IGNORE_CTTY
Paul Eggert <eggert@cs.ucla.edu>
parents: 16795
diff changeset
275 #ifndef O_NOLINK
3ae14a5da4df fcntl-h: support GNU flags like O_IGNORE_CTTY
Paul Eggert <eggert@cs.ucla.edu>
parents: 16795
diff changeset
276 # define O_NOLINK 0
3ae14a5da4df fcntl-h: support GNU flags like O_IGNORE_CTTY
Paul Eggert <eggert@cs.ucla.edu>
parents: 16795
diff changeset
277 #endif
3ae14a5da4df fcntl-h: support GNU flags like O_IGNORE_CTTY
Paul Eggert <eggert@cs.ucla.edu>
parents: 16795
diff changeset
278
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
279 #ifndef O_NOLINKS
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
280 # define O_NOLINKS 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
281 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
282
17135
3ae14a5da4df fcntl-h: support GNU flags like O_IGNORE_CTTY
Paul Eggert <eggert@cs.ucla.edu>
parents: 16795
diff changeset
283 #ifndef O_NOTRANS
3ae14a5da4df fcntl-h: support GNU flags like O_IGNORE_CTTY
Paul Eggert <eggert@cs.ucla.edu>
parents: 16795
diff changeset
284 # define O_NOTRANS 0
3ae14a5da4df fcntl-h: support GNU flags like O_IGNORE_CTTY
Paul Eggert <eggert@cs.ucla.edu>
parents: 16795
diff changeset
285 #endif
3ae14a5da4df fcntl-h: support GNU flags like O_IGNORE_CTTY
Paul Eggert <eggert@cs.ucla.edu>
parents: 16795
diff changeset
286
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
287 #ifndef O_RSYNC
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
288 # define O_RSYNC 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
289 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
290
13616
acc972b5da60 fcntl-h, etc.: prefer O_SEARCH to O_RDONLY when applicable
Paul Eggert <eggert@cs.ucla.edu>
parents: 12931
diff changeset
291 #ifndef O_SEARCH
17152
22b1a8f00587 fcntl-h: default O_SEARCH, O_EXEC back to O_RDONLY
Paul Eggert <eggert@cs.ucla.edu>
parents: 17148
diff changeset
292 # define O_SEARCH O_RDONLY /* This is often close enough in older systems. */
13616
acc972b5da60 fcntl-h, etc.: prefer O_SEARCH to O_RDONLY when applicable
Paul Eggert <eggert@cs.ucla.edu>
parents: 12931
diff changeset
293 #endif
acc972b5da60 fcntl-h, etc.: prefer O_SEARCH to O_RDONLY when applicable
Paul Eggert <eggert@cs.ucla.edu>
parents: 12931
diff changeset
294
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
295 #ifndef O_SYNC
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
296 # define O_SYNC 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
297 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
298
11877
18205f9302ac fcntl-h: add O_TTY_INIT support
Eric Blake <ebb9@byu.net>
parents: 11859
diff changeset
299 #ifndef O_TTY_INIT
18205f9302ac fcntl-h: add O_TTY_INIT support
Eric Blake <ebb9@byu.net>
parents: 11859
diff changeset
300 # define O_TTY_INIT 0
18205f9302ac fcntl-h: add O_TTY_INIT support
Eric Blake <ebb9@byu.net>
parents: 11859
diff changeset
301 #endif
18205f9302ac fcntl-h: add O_TTY_INIT support
Eric Blake <ebb9@byu.net>
parents: 11859
diff changeset
302
17148
8e5a994a5d5b fcntl-h: default O_SEARCH, O_EXEC to O_PATH if available
Paul Eggert <eggert@cs.ucla.edu>
parents: 17135
diff changeset
303 #if ~O_ACCMODE & (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH)
14534
2078181e301c fcntl-h: fix O_ACCMODE on cygwin
Eric Blake <eblake@redhat.com>
parents: 14532
diff changeset
304 # undef O_ACCMODE
2078181e301c fcntl-h: fix O_ACCMODE on cygwin
Eric Blake <eblake@redhat.com>
parents: 14532
diff changeset
305 # define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH)
2078181e301c fcntl-h: fix O_ACCMODE on cygwin
Eric Blake <eblake@redhat.com>
parents: 14532
diff changeset
306 #endif
2078181e301c fcntl-h: fix O_ACCMODE on cygwin
Eric Blake <eblake@redhat.com>
parents: 14532
diff changeset
307
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
308 /* For systems that distinguish between text and binary I/O.
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
309 O_BINARY is usually declared in fcntl.h */
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
310 #if !defined O_BINARY && defined _O_BINARY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
311 /* For MSC-compatible compilers. */
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
312 # define O_BINARY _O_BINARY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
313 # define O_TEXT _O_TEXT
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
314 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
315
10778
ddc567d280d1 Treat Haiku like BeOS.
Ingo Weinhold <ingo_weinhold@gmx.de>
parents: 10655
diff changeset
316 #if defined __BEOS__ || defined __HAIKU__
ddc567d280d1 Treat Haiku like BeOS.
Ingo Weinhold <ingo_weinhold@gmx.de>
parents: 10655
diff changeset
317 /* BeOS 5 and Haiku have O_BINARY and O_TEXT, but they have no effect. */
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
318 # undef O_BINARY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
319 # undef O_TEXT
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
320 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
321
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
322 #ifndef O_BINARY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
323 # define O_BINARY 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
324 # define O_TEXT 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
325 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
326
11942
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
327 /* Fix up the AT_* macros. */
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
328
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
329 /* Work around a bug in Solaris 9 and 10: AT_FDCWD is positive. Its
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
330 value exceeds INT_MAX, so its use as an int doesn't conform to the
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
331 C standard, and GCC and Sun C complain in some cases. If the bug
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
332 is present, undef AT_FDCWD here, so it can be redefined below. */
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
333 #if 0 < AT_FDCWD && AT_FDCWD == 0xffd19553
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
334 # undef AT_FDCWD
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
335 #endif
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
336
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
337 /* Use the same bit pattern as Solaris 9, but with the proper
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
338 signedness. The bit pattern is important, in case this actually is
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
339 Solaris with the above workaround. */
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
340 #ifndef AT_FDCWD
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
341 # define AT_FDCWD (-3041965)
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
342 #endif
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
343
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
344 /* Use the same values as Solaris 9. This shouldn't matter, but
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
345 there's no real reason to differ. */
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
346 #ifndef AT_SYMLINK_NOFOLLOW
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
347 # define AT_SYMLINK_NOFOLLOW 4096
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
348 #endif
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
349
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
350 #ifndef AT_REMOVEDIR
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
351 # define AT_REMOVEDIR 1
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
352 #endif
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
353
11945
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
354 /* Solaris 9 lacks these two, so just pick unique values. */
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
355 #ifndef AT_SYMLINK_FOLLOW
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
356 # define AT_SYMLINK_FOLLOW 2
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
357 #endif
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
358
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
359 #ifndef AT_EACCESS
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
360 # define AT_EACCESS 4
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
361 #endif
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
362
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
363
14840
5f709022a256 Allow multiple gnulib generated include files to be combined.
Bruno Haible <bruno@clisp.org>
parents: 14591
diff changeset
364 #endif /* _@GUARD_PREFIX@_FCNTL_H */
5f709022a256 Allow multiple gnulib generated include files to be combined.
Bruno Haible <bruno@clisp.org>
parents: 14591
diff changeset
365 #endif /* _@GUARD_PREFIX@_FCNTL_H */
10533
d4b37870fdc9 Override open more carefully.
Bruno Haible <bruno@clisp.org>
parents: 10528
diff changeset
366 #endif