New upstream version 1.9
[debian/gzip] / lib / sys_types.in.h
1 /* Provide a more complete sys/types.h.
2
3    Copyright (C) 2011-2018 Free Software Foundation, Inc.
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3, or (at your option)
8    any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program; if not, see <https://www.gnu.org/licenses/>.  */
17
18 #if __GNUC__ >= 3
19 @PRAGMA_SYSTEM_HEADER@
20 #endif
21 @PRAGMA_COLUMNS@
22
23 #ifndef _@GUARD_PREFIX@_SYS_TYPES_H
24
25 /* The include_next requires a split double-inclusion guard.  */
26 # define _GL_INCLUDING_SYS_TYPES_H
27 #@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@
28 # undef _GL_INCLUDING_SYS_TYPES_H
29
30 #ifndef _@GUARD_PREFIX@_SYS_TYPES_H
31 #define _@GUARD_PREFIX@_SYS_TYPES_H
32
33 /* Override off_t if Large File Support is requested on native Windows.  */
34 #if @WINDOWS_64_BIT_OFF_T@
35 /* Same as int64_t in <stdint.h>.  */
36 # if defined _MSC_VER
37 #  define off_t __int64
38 # else
39 #  define off_t long long int
40 # endif
41 /* Indicator, for gnulib internal purposes.  */
42 # define _GL_WINDOWS_64_BIT_OFF_T 1
43 #endif
44
45 /* Override dev_t and ino_t if distinguishable inodes support is requested
46    on native Windows.  */
47 #if @WINDOWS_STAT_INODES@
48
49 # if @WINDOWS_STAT_INODES@ == 2
50 /* Experimental, not useful in Windows 10.  */
51
52 /* Define dev_t to a 64-bit type.  */
53 #  if !defined GNULIB_defined_dev_t
54 typedef unsigned long long int rpl_dev_t;
55 #   undef dev_t
56 #   define dev_t rpl_dev_t
57 #   define GNULIB_defined_dev_t 1
58 #  endif
59
60 /* Define ino_t to a 128-bit type.  */
61 #  if !defined GNULIB_defined_ino_t
62 /* MSVC does not have a 128-bit integer type.
63    GCC has a 128-bit integer type __int128, but only on 64-bit targets.  */
64 typedef struct { unsigned long long int _gl_ino[2]; } rpl_ino_t;
65 #   undef ino_t
66 #   define ino_t rpl_ino_t
67 #   define GNULIB_defined_ino_t 1
68 #  endif
69
70 # else /* @WINDOWS_STAT_INODES@ == 1 */
71
72 /* Define ino_t to a 64-bit type.  */
73 #  if !defined GNULIB_defined_ino_t
74 typedef unsigned long long int rpl_ino_t;
75 #   undef ino_t
76 #   define ino_t rpl_ino_t
77 #   define GNULIB_defined_ino_t 1
78 #  endif
79
80 # endif
81
82 /* Indicator, for gnulib internal purposes.  */
83 # define _GL_WINDOWS_STAT_INODES @WINDOWS_STAT_INODES@
84
85 #endif
86
87 /* MSVC 9 defines size_t in <stddef.h>, not in <sys/types.h>.  */
88 /* But avoid namespace pollution on glibc systems.  */
89 #if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) \
90     && ! defined __GLIBC__
91 # include <stddef.h>
92 #endif
93
94 #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
95 #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */