annotate lib/fcntl.in.h @ 16795:6a9ea5d7b466

Large File Support for native Windows platforms. * m4/largefile.m4 (gl_LARGEFILE): New macro. * modules/largefile (configure.ac): Require gl_LARGEFILE. * lib/sys_types.in.h (off_t) [WINDOWS_64_BIT_OFF_T]: Define to a 64-bit type. * m4/sys_types_h.m4 (gl_SYS_TYPES_H): Set WINDOWS_64_BIT_OFF_T. * modules/sys_types (Makefile.am): Substitute WINDOWS_64_BIT_OFF_T. * doc/posix-headers/sys_types.texi: Mention the effect of the 'largefile' module. * lib/fcntl.in.h: Add comments about off_t. * modules/fcntl-h (Depends-on): Add sys_types. * lib/unistd.in.h [WINDOWS_64_BIT_OFF_T]: Include <sys/types.h>. (ftruncate): Replace it if REPLACE_FTRUNCATE is 1. * m4/unistd_h.m4 (gl_UNISTD_H): Require gl_SYS_TYPES_H. (gl_UNISTD_H_DEFAULTS): Initialize REPLACE_FTRUNCATE. * modules/unistd (Depends-on): Add sys_types. (Makefile.am): Substitute WINDOWS_64_BIT_OFF_T, REPLACE_FTRUNCATE. * lib/lseek.c (rpl_lseek) [_GL_WINDOWS_64_BIT_OFF_T]: Use _lseeki64 instead of lseek. * m4/lseek.m4 (gl_FUNC_LSEEK): Require gl_SYS_TYPES_H. Set REPLACE_LSEEK if WINDOWS_64_BIT_OFF_T is 1. * modules/lseek (Depends-on): Add sys_types. * lib/ftruncate.c: Put under GPLv3+. Include <windows.h>, msvc-nothrow.h. (SetFileSize): New function. (ftruncate) [_GL_WINDOWS_64_BIT_OFF_T]: New implementation. * m4/ftruncate.m4 (gl_FUNC_FTRUNCATE): Set REPLACE_FTRUNCATE on Windows if Large File Support is requested. * modules/ftruncate (configure.ac): Consider REPLACE_FTRUNCATE. (Depends-on): Add sys_types, msvc-nothrow. Update conditions. * lib/stdio.in.h: Add comments about off_t. * modules/stdio (Depends-on): Add sys_types. * lib/ftello.c [_GL_WINDOWS_64_BIT_OFF_T]: Use _ftelli64 or ftello64 instead of ftello. * m4/ftello.m4 (gl_FUNC_FTELLO): Require gl_SYS_TYPES_H. Set REPLACE_FTELLO if WINDOWS_64_BIT_OFF_T is 1. (gl_PREREQ_FTELLO): New macro. * modules/ftello (Depends-on): Add sys_types. (configure.ac): Incoke gl_PREREQ_FTELLO. * lib/fseeko.c [_GL_WINDOWS_64_BIT_OFF_T]: Use _fseeki64 or fseeko64 instead of fseeko. * m4/fseeko.m4 (gl_FUNC_FSEEKO): Require gl_SYS_TYPES_H. Set REPLACE_FSEEKO if WINDOWS_64_BIT_OFF_T is 1. (gl_PREREQ_FSEEKO): New macro. * modules/fseeko (Depends-on): Add sys_types. (configure.ac): Invoke gl_PREREQ_FSEEKO. * lib/sys_stat.in.h: Add comments about off_t. (stat, fstat) [WINDOWS_64_BIT_ST_SIZE]: Define to variants that use a 64-bit integer for st_size in 'struct stat'. * m4/sys_stat_h.m4 (gl_HEADER_SYS_STAT_H): Set WINDOWS_64_BIT_ST_SIZE. Define _GL_WINDOWS_64_BIT_ST_SIZE. * modules/sys_stat (Depends-on): Add sys_types. (Makefile.am): Substitute WINDOWS_64_BIT_ST_SIZE. * lib/stat.c (stat) [_GL_WINDOWS_64_BIT_ST_SIZE]: Define to _stati64 instead of stat or _stat. * lib/fstat.c [_GL_WINDOWS_64_BIT_ST_SIZE]: Use _fstati64 and 'struct _stati64' instead of fstat and 'struct stat'. * m4/fstat.m4 (gl_FUNC_FSTAT): Require gl_HEADER_SYS_STAT_H. Set REPLACE_FSTAT if WINDOWS_64_BIT_ST_SIZE is 1. Reported by Ray Satiro <raysatiro@yahoo.com>.
author Bruno Haible <bruno@clisp.org>
date Sat, 14 Apr 2012 23:27:45 +0200
parents ab517781f037
children 3ae14a5da4df
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
16201
8250f2777afc maint: update all copyright year number ranges
Jim Meyering <meyering@redhat.com>
parents: 14840
diff changeset
3 Copyright (C) 2006-2012 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
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 9299
diff changeset
16 along with this program. If not, see <http://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. */
13885
87a95303747f Port to uClibc.
Bruno Haible <bruno@clisp.org>
parents: 13851
diff changeset
37 #if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && !(__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. */
872c921488fd fcntl-h: Fix for use of C++ on glibc systems.
Bruno Haible <bruno@clisp.org>
parents: 13885
diff changeset
56 #if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && !(__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) \
ab517781f037 Improve support for MSVC 9.
Bruno Haible <bruno@clisp.org>
parents: 16235
diff changeset
71 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
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
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
189 #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
190 /* Tru64 spells it 'O_DIRECTIO'. */
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
191 # define O_DIRECT O_DIRECTIO
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
192 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
193
11859
27f6d88f60b1 Move more flags to lib/fcntl.in.h.
Paolo Bonzini <bonzini@gnu.org>
parents: 10778
diff changeset
194 #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
195 /* Mingw spells it 'O_NOINHERIT'. */
11859
27f6d88f60b1 Move more flags to lib/fcntl.in.h.
Paolo Bonzini <bonzini@gnu.org>
parents: 10778
diff changeset
196 # define O_CLOEXEC O_NOINHERIT
27f6d88f60b1 Move more flags to lib/fcntl.in.h.
Paolo Bonzini <bonzini@gnu.org>
parents: 10778
diff changeset
197 #endif
27f6d88f60b1 Move more flags to lib/fcntl.in.h.
Paolo Bonzini <bonzini@gnu.org>
parents: 10778
diff changeset
198
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
199 #ifndef O_CLOEXEC
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
200 # define O_CLOEXEC 0
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
201 #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
202
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
203 #ifndef O_DIRECT
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
204 # define O_DIRECT 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
205 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
206
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
207 #ifndef O_DIRECTORY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
208 # define O_DIRECTORY 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
209 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
210
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
211 #ifndef O_DSYNC
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
212 # define O_DSYNC 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
213 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
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_EXEC
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
216 # define O_EXEC O_RDONLY /* This is often close enough in older systems. */
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
217 #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
218
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
219 #ifndef O_NDELAY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
220 # define O_NDELAY 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
221 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
222
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
223 #ifndef O_NOATIME
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
224 # define O_NOATIME 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
225 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
226
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
227 #ifndef O_NONBLOCK
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
228 # define O_NONBLOCK O_NDELAY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
229 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
230
14591
a5714f0caebd nonblocking: Add comment.
Bruno Haible <bruno@clisp.org>
parents: 14534
diff changeset
231 /* 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
232 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
233 or to 0 as fallback. */
14532
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
234 #if @GNULIB_NONBLOCKING@
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
235 # if O_NONBLOCK
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
236 # define GNULIB_defined_O_NONBLOCK 0
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
237 # else
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
238 # define GNULIB_defined_O_NONBLOCK 1
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
239 # undef O_NONBLOCK
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
240 # define O_NONBLOCK 0x40000000
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
241 # endif
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
242 #endif
0b3f0c54fbc8 nonblocking: provide O_NONBLOCK for mingw
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
243
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
244 #ifndef O_NOCTTY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
245 # define O_NOCTTY 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
246 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
248 #ifndef O_NOFOLLOW
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
249 # define O_NOFOLLOW 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
250 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
251
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
252 #ifndef O_NOLINKS
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
253 # define O_NOLINKS 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
254 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
255
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
256 #ifndef O_RSYNC
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
257 # define O_RSYNC 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
258 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
259
13616
acc972b5da60 fcntl-h, etc.: prefer O_SEARCH to O_RDONLY when applicable
Paul Eggert <eggert@cs.ucla.edu>
parents: 12931
diff changeset
260 #ifndef O_SEARCH
acc972b5da60 fcntl-h, etc.: prefer O_SEARCH to O_RDONLY when applicable
Paul Eggert <eggert@cs.ucla.edu>
parents: 12931
diff changeset
261 # define O_SEARCH O_RDONLY /* This is often close enough in older systems. */
acc972b5da60 fcntl-h, etc.: prefer O_SEARCH to O_RDONLY when applicable
Paul Eggert <eggert@cs.ucla.edu>
parents: 12931
diff changeset
262 #endif
acc972b5da60 fcntl-h, etc.: prefer O_SEARCH to O_RDONLY when applicable
Paul Eggert <eggert@cs.ucla.edu>
parents: 12931
diff changeset
263
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
264 #ifndef O_SYNC
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
265 # define O_SYNC 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
266 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
267
11877
18205f9302ac fcntl-h: add O_TTY_INIT support
Eric Blake <ebb9@byu.net>
parents: 11859
diff changeset
268 #ifndef O_TTY_INIT
18205f9302ac fcntl-h: add O_TTY_INIT support
Eric Blake <ebb9@byu.net>
parents: 11859
diff changeset
269 # define O_TTY_INIT 0
18205f9302ac fcntl-h: add O_TTY_INIT support
Eric Blake <ebb9@byu.net>
parents: 11859
diff changeset
270 #endif
18205f9302ac fcntl-h: add O_TTY_INIT support
Eric Blake <ebb9@byu.net>
parents: 11859
diff changeset
271
14534
2078181e301c fcntl-h: fix O_ACCMODE on cygwin
Eric Blake <eblake@redhat.com>
parents: 14532
diff changeset
272 #if 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
273 # undef O_ACCMODE
2078181e301c fcntl-h: fix O_ACCMODE on cygwin
Eric Blake <eblake@redhat.com>
parents: 14532
diff changeset
274 # 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
275 #endif
2078181e301c fcntl-h: fix O_ACCMODE on cygwin
Eric Blake <eblake@redhat.com>
parents: 14532
diff changeset
276
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
277 /* 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
278 O_BINARY is usually declared in fcntl.h */
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
279 #if !defined O_BINARY && defined _O_BINARY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
280 /* For MSC-compatible compilers. */
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
281 # define O_BINARY _O_BINARY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
282 # define O_TEXT _O_TEXT
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
283 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
284
10778
ddc567d280d1 Treat Haiku like BeOS.
Ingo Weinhold <ingo_weinhold@gmx.de>
parents: 10655
diff changeset
285 #if defined __BEOS__ || defined __HAIKU__
ddc567d280d1 Treat Haiku like BeOS.
Ingo Weinhold <ingo_weinhold@gmx.de>
parents: 10655
diff changeset
286 /* 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
287 # undef O_BINARY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
288 # undef O_TEXT
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
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
291 #ifndef O_BINARY
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
292 # define O_BINARY 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
293 # define O_TEXT 0
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
294 #endif
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
295
11942
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
296 /* Fix up the AT_* macros. */
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
297
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
298 /* 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
299 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
300 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
301 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
302 #if 0 < AT_FDCWD && AT_FDCWD == 0xffd19553
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
303 # undef AT_FDCWD
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
304 #endif
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
305
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
306 /* 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
307 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
308 Solaris with the above workaround. */
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
309 #ifndef AT_FDCWD
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
310 # define AT_FDCWD (-3041965)
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
311 #endif
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
312
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
313 /* 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
314 there's no real reason to differ. */
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
315 #ifndef AT_SYMLINK_NOFOLLOW
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
316 # define AT_SYMLINK_NOFOLLOW 4096
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
317 #endif
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
318
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
319 #ifndef AT_REMOVEDIR
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
320 # define AT_REMOVEDIR 1
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
321 #endif
d1047ae4b8d5 openat: declare in POSIX headers
Eric Blake <ebb9@byu.net>
parents: 11933
diff changeset
322
11945
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
323 /* Solaris 9 lacks these two, so just pick unique values. */
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
324 #ifndef AT_SYMLINK_FOLLOW
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
325 # define AT_SYMLINK_FOLLOW 2
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
326 #endif
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
327
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
328 #ifndef AT_EACCESS
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
329 # define AT_EACCESS 4
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
330 #endif
2cf208dc022b faccessat: new module
Eric Blake <ebb9@byu.net>
parents: 11942
diff changeset
331
9247
dc86ef955b9b Rename fcntl_.h to fcntl.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
332
14840
5f709022a256 Allow multiple gnulib generated include files to be combined.
Bruno Haible <bruno@clisp.org>
parents: 14591
diff changeset
333 #endif /* _@GUARD_PREFIX@_FCNTL_H */
5f709022a256 Allow multiple gnulib generated include files to be combined.
Bruno Haible <bruno@clisp.org>
parents: 14591
diff changeset
334 #endif /* _@GUARD_PREFIX@_FCNTL_H */
10533
d4b37870fdc9 Override open more carefully.
Bruno Haible <bruno@clisp.org>
parents: 10528
diff changeset
335 #endif