compat / vcbuild / include / unistd.hon commit Merge branch 'js/import-tars-hardlinks' into maint (5e09f1d)
   1#ifndef _UNISTD_
   2#define _UNISTD_
   3
   4/* Win32 define for porting git*/
   5
   6#ifndef _MODE_T_
   7#define _MODE_T_
   8typedef unsigned short _mode_t;
   9
  10#ifndef _NO_OLDNAMES
  11typedef _mode_t mode_t;
  12#endif
  13#endif  /* Not _MODE_T_ */
  14
  15#ifndef _SSIZE_T_
  16#define _SSIZE_T_
  17typedef long _ssize_t;
  18
  19#ifndef _OFF_T_
  20#define _OFF_T_
  21typedef long _off_t;
  22
  23#ifndef _NO_OLDNAMES
  24typedef _off_t  off_t;
  25#endif
  26#endif  /* Not _OFF_T_ */
  27
  28
  29#ifndef _NO_OLDNAMES
  30typedef _ssize_t ssize_t;
  31#endif
  32#endif /* Not _SSIZE_T_ */
  33
  34typedef signed char int8_t;
  35typedef unsigned char   uint8_t;
  36typedef short  int16_t;
  37typedef unsigned short  uint16_t;
  38typedef int  int32_t;
  39typedef unsigned   uint32_t;
  40typedef long long  int64_t;
  41typedef unsigned long long   uint64_t;
  42
  43typedef long long  intmax_t;
  44typedef unsigned long long uintmax_t;
  45
  46typedef int64_t off64_t;
  47
  48#if !defined(_MSC_VER) || _MSC_VER < 1600
  49#define INTMAX_MIN  _I64_MIN
  50#define INTMAX_MAX  _I64_MAX
  51#define UINTMAX_MAX _UI64_MAX
  52
  53#define UINT32_MAX 0xffffffff  /* 4294967295U */
  54#else
  55#include <stdint.h>
  56#endif
  57
  58#define STDIN_FILENO  0
  59#define STDOUT_FILENO 1
  60#define STDERR_FILENO 2
  61
  62/* Some defines for _access nAccessMode (MS doesn't define them, but
  63 * it doesn't seem to hurt to add them). */
  64#define F_OK    0       /* Check for file existence */
  65/* Well maybe it does hurt.  On newer versions of MSVCRT, an access mode
  66   of 1 causes invalid parameter error. */
  67#define X_OK    0       /* MS access() doesn't check for execute permission. */
  68#define W_OK    2       /* Check for write permission */
  69#define R_OK    4       /* Check for read permission */
  70
  71#define _S_IFIFO        0x1000  /* FIFO */
  72#define _S_IFCHR        0x2000  /* Character */
  73#define _S_IFBLK        0x3000  /* Block: Is this ever set under w32? */
  74#define _S_IFDIR        0x4000  /* Directory */
  75#define _S_IFREG        0x8000  /* Regular */
  76
  77#define _S_IFMT         0xF000  /* File type mask */
  78
  79#define _S_IXUSR        _S_IEXEC
  80#define _S_IWUSR        _S_IWRITE
  81#define _S_IRUSR        _S_IREAD
  82#define _S_ISDIR(m)     (((m) & _S_IFMT) == _S_IFDIR)
  83
  84#define S_IFIFO         _S_IFIFO
  85#define S_IFCHR         _S_IFCHR
  86#define S_IFBLK         _S_IFBLK
  87#define S_IFDIR         _S_IFDIR
  88#define S_IFREG         _S_IFREG
  89#define S_IFMT          _S_IFMT
  90#define S_IEXEC         _S_IEXEC
  91#define S_IWRITE        _S_IWRITE
  92#define S_IREAD         _S_IREAD
  93#define S_IRWXU         _S_IRWXU
  94#define S_IXUSR         _S_IXUSR
  95#define S_IWUSR         _S_IWUSR
  96#define S_IRUSR         _S_IRUSR
  97
  98
  99#define S_ISDIR(m)      (((m) & S_IFMT) == S_IFDIR)
 100#define S_ISREG(m)      (((m) & S_IFMT) == S_IFREG)
 101#define S_ISFIFO(m)     (((m) & S_IFMT) == S_IFIFO)
 102
 103#endif