sys_types.in.h 3.09 KB
Newer Older
Paul Eggert's avatar
Paul Eggert committed
1 2
/* Provide a more complete sys/types.h.

Paul Eggert's avatar
Paul Eggert committed
3
   Copyright (C) 2011-2020 Free Software Foundation, Inc.
Paul Eggert's avatar
Paul Eggert committed
4 5 6 7 8 9 10 11 12 13 14 15

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
Paul Eggert's avatar
Paul Eggert committed
16
   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
Paul Eggert's avatar
Paul Eggert committed
17 18 19 20 21 22

#if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
#endif
@PRAGMA_COLUMNS@

Paul Eggert's avatar
Paul Eggert committed
23 24 25 26 27 28 29 30 31 32 33
#if defined _WIN32 && !defined __CYGWIN__ \
    && (defined __need_off_t || defined __need___off64_t \
        || defined __need_ssize_t || defined __need_time_t)

/* Special invocation convention inside mingw header files.  */

#@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@

#else
/* Normal invocation convention.  */

Paul Eggert's avatar
Paul Eggert committed
34 35 36
#ifndef _@GUARD_PREFIX@_SYS_TYPES_H

/* The include_next requires a split double-inclusion guard.  */
Paul Eggert's avatar
Paul Eggert committed
37
# define _GL_INCLUDING_SYS_TYPES_H
Paul Eggert's avatar
Paul Eggert committed
38
#@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@
Paul Eggert's avatar
Paul Eggert committed
39
# undef _GL_INCLUDING_SYS_TYPES_H
Paul Eggert's avatar
Paul Eggert committed
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

#ifndef _@GUARD_PREFIX@_SYS_TYPES_H
#define _@GUARD_PREFIX@_SYS_TYPES_H

/* Override off_t if Large File Support is requested on native Windows.  */
#if @WINDOWS_64_BIT_OFF_T@
/* Same as int64_t in <stdint.h>.  */
# if defined _MSC_VER
#  define off_t __int64
# else
#  define off_t long long int
# endif
/* Indicator, for gnulib internal purposes.  */
# define _GL_WINDOWS_64_BIT_OFF_T 1
#endif

Paul Eggert's avatar
Paul Eggert committed
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
/* Override dev_t and ino_t if distinguishable inodes support is requested
   on native Windows.  */
#if @WINDOWS_STAT_INODES@

# if @WINDOWS_STAT_INODES@ == 2
/* Experimental, not useful in Windows 10.  */

/* Define dev_t to a 64-bit type.  */
#  if !defined GNULIB_defined_dev_t
typedef unsigned long long int rpl_dev_t;
#   undef dev_t
#   define dev_t rpl_dev_t
#   define GNULIB_defined_dev_t 1
#  endif

/* Define ino_t to a 128-bit type.  */
#  if !defined GNULIB_defined_ino_t
/* MSVC does not have a 128-bit integer type.
   GCC has a 128-bit integer type __int128, but only on 64-bit targets.  */
typedef struct { unsigned long long int _gl_ino[2]; } rpl_ino_t;
#   undef ino_t
#   define ino_t rpl_ino_t
#   define GNULIB_defined_ino_t 1
#  endif

# else /* @WINDOWS_STAT_INODES@ == 1 */

/* Define ino_t to a 64-bit type.  */
#  if !defined GNULIB_defined_ino_t
typedef unsigned long long int rpl_ino_t;
#   undef ino_t
#   define ino_t rpl_ino_t
#   define GNULIB_defined_ino_t 1
#  endif

# endif

/* Indicator, for gnulib internal purposes.  */
# define _GL_WINDOWS_STAT_INODES @WINDOWS_STAT_INODES@

#endif

Paul Eggert's avatar
Paul Eggert committed
98 99
/* MSVC 9 defines size_t in <stddef.h>, not in <sys/types.h>.  */
/* But avoid namespace pollution on glibc systems.  */
Paul Eggert's avatar
Paul Eggert committed
100
#if (defined _WIN32 && ! defined __CYGWIN__) && ! defined __GLIBC__
Paul Eggert's avatar
Paul Eggert committed
101 102 103 104 105
# include <stddef.h>
#endif

#endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
#endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
Paul Eggert's avatar
Paul Eggert committed
106
#endif /* __need_XXX */