1 /*
2  * Public domain
3  * sys/types.h compatibility shim
4  */
5 
6 #ifdef _MSC_VER
7 #if _MSC_VER >= 1900
8 #include <../ucrt/sys/types.h>
9 #else
10 #include <../include/sys/types.h>
11 #endif
12 #endif
13 
14 #ifndef _COMPAT_TYPES_H
15 #define _COMPAT_TYPES_H
16 
17 #include <stdint.h>
18 
19 #ifdef __MINGW32__
20 #include <_bsd_types.h>
21 typedef uint32_t        in_addr_t;
22 typedef uint32_t        uid_t;
23 #endif
24 
25 #ifdef _MSC_VER
26 typedef unsigned char   u_char;
27 typedef unsigned short  u_short;
28 typedef unsigned int    u_int;
29 typedef unsigned long   u_long;
30 
31 #include <basetsd.h>
32 typedef SSIZE_T ssize_t;
33 
34 #ifndef SSIZE_MAX
35 #ifdef _WIN64
36 #define SSIZE_MAX _I64_MAX
37 #else
38 #define SSIZE_MAX INT_MAX
39 #endif
40 #endif
41 
42 #endif
43 
44 #if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__bounded__)
45 # define __bounded__(x, y, z)
46 #endif
47 
48 #ifdef _WIN32
49 #define __warn_references(sym,msg)
50 #else
51 
52 #ifndef __warn_references
53 
54 #ifndef __STRING
55 #define __STRING(x) #x
56 #endif
57 
58 #if defined(__GNUC__)  && defined (HAS_GNU_WARNING_LONG)
59 #define __warn_references(sym,msg)          \
60   __asm__(".section .gnu.warning." __STRING(sym)  \
61          "\n\t.ascii \"" msg "\"\n\t.text");
62 #else
63 #define __warn_references(sym,msg)
64 #endif
65 
66 #endif /* __warn_references */
67 #endif /* _WIN32 */
68 
69 #endif /* !_COMPAT_TYPES_H */
70