(root)/
tar-1.35/
gnu/
sys_types.in.h
       1  /* Provide a more complete sys/types.h.
       2  
       3     Copyright (C) 2011-2023 Free Software Foundation, Inc.
       4  
       5     This file is free software: you can redistribute it and/or modify
       6     it under the terms of the GNU Lesser General Public License as
       7     published by the Free Software Foundation; either version 2.1 of the
       8     License, or (at your option) any later version.
       9  
      10     This file 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 Lesser General Public License for more details.
      14  
      15     You should have received a copy of the GNU Lesser 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  /* This file uses #include_next of a system file that defines time_t.
      24     For the 'year2038' module to work right, <config.h> needs to have been
      25     included before.  */
      26  #if !_GL_CONFIG_H_INCLUDED
      27   #error "Please include config.h first."
      28  #endif
      29  
      30  #if defined _WIN32 && !defined __CYGWIN__ \
      31      && (defined __need_off_t || defined __need___off64_t \
      32          || defined __need_ssize_t || defined __need_time_t)
      33  
      34  /* Special invocation convention inside mingw header files.  */
      35  
      36  #@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@
      37  
      38  #else
      39  /* Normal invocation convention.  */
      40  
      41  #ifndef _@GUARD_PREFIX@_SYS_TYPES_H
      42  
      43  /* The include_next requires a split double-inclusion guard.  */
      44  # define _GL_INCLUDING_SYS_TYPES_H
      45  #@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@
      46  # undef _GL_INCLUDING_SYS_TYPES_H
      47  
      48  #ifndef _@GUARD_PREFIX@_SYS_TYPES_H
      49  #define _@GUARD_PREFIX@_SYS_TYPES_H
      50  
      51  /* Override off_t if Large File Support is requested on native Windows.  */
      52  #if @WINDOWS_64_BIT_OFF_T@
      53  /* Same as int64_t in <stdint.h>.  */
      54  # if defined _MSC_VER
      55  #  define off_t __int64
      56  # else
      57  #  define off_t long long int
      58  # endif
      59  /* Indicator, for gnulib internal purposes.  */
      60  # define _GL_WINDOWS_64_BIT_OFF_T 1
      61  #endif
      62  
      63  /* Override dev_t and ino_t if distinguishable inodes support is requested
      64     on native Windows.  */
      65  #if @WINDOWS_STAT_INODES@
      66  
      67  # if @WINDOWS_STAT_INODES@ == 2
      68  /* Experimental, not useful in Windows 10.  */
      69  
      70  /* Define dev_t to a 64-bit type.  */
      71  #  if !defined GNULIB_defined_dev_t
      72  typedef unsigned long long int rpl_dev_t;
      73  #   undef dev_t
      74  #   define dev_t rpl_dev_t
      75  #   define GNULIB_defined_dev_t 1
      76  #  endif
      77  
      78  /* Define ino_t to a 128-bit type.  */
      79  #  if !defined GNULIB_defined_ino_t
      80  /* MSVC does not have a 128-bit integer type.
      81     GCC has a 128-bit integer type __int128, but only on 64-bit targets.  */
      82  typedef struct { unsigned long long int _gl_ino[2]; } rpl_ino_t;
      83  #   undef ino_t
      84  #   define ino_t rpl_ino_t
      85  #   define GNULIB_defined_ino_t 1
      86  #  endif
      87  
      88  # else /* @WINDOWS_STAT_INODES@ == 1 */
      89  
      90  /* Define ino_t to a 64-bit type.  */
      91  #  if !defined GNULIB_defined_ino_t
      92  typedef unsigned long long int rpl_ino_t;
      93  #   undef ino_t
      94  #   define ino_t rpl_ino_t
      95  #   define GNULIB_defined_ino_t 1
      96  #  endif
      97  
      98  # endif
      99  
     100  /* Indicator, for gnulib internal purposes.  */
     101  # define _GL_WINDOWS_STAT_INODES @WINDOWS_STAT_INODES@
     102  
     103  #endif
     104  
     105  /* MSVC 9 defines size_t in <stddef.h>, not in <sys/types.h>.  */
     106  /* But avoid namespace pollution on glibc systems.  */
     107  #if (defined _WIN32 && ! defined __CYGWIN__) && ! defined __GLIBC__
     108  # include <stddef.h>
     109  #endif
     110  
     111  #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
     112  #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
     113  #endif /* __need_XXX */