about summary refs log tree commit diff
path: root/posix/sys/types.h
diff options
context:
space:
mode:
Diffstat (limited to 'posix/sys/types.h')
-rw-r--r--posix/sys/types.h29
1 files changed, 21 insertions, 8 deletions
diff --git a/posix/sys/types.h b/posix/sys/types.h
index ffeeee1ff0..f49c996a04 100644
--- a/posix/sys/types.h
+++ b/posix/sys/types.h
@@ -21,13 +21,13 @@
  */
 
 #ifndef	_SYS_TYPES_H
-
 #define	_SYS_TYPES_H	1
+
 #include <features.h>
 
 __BEGIN_DECLS
 
-#include <gnu/types.h>
+#include <bits/types.h>
 
 #ifdef	__USE_BSD
 typedef __u_char u_char;
@@ -80,16 +80,25 @@ typedef unsigned int uint;
 
 #if !defined (__GNUC__) || __GNUC__ < 2 || __GNUC_MINOR__ < 7
 
+/* These types are defined by the ISO C 9x header <inttypes.h>. */
+#ifndef __int8_t_defined
+#define __int8_t_defined
 typedef	char int8_t;
-typedef	unsigned char u_int8_t;
 typedef	short int int16_t;
-typedef	unsigned short int u_int16_t;
 typedef	int int32_t;
-typedef	unsigned int u_int32_t;
 #ifdef __GNUC__
 typedef long long int int64_t;
+#endif
+#endif
+
+/* But these were defined by ISO C without the first `_'.  */
+typedef	unsigned char u_int8_t;
+typedef	unsigned short int u_int16_t;
+typedef	unsigned int u_int32_t;
+#ifdef __GNUC__
 typedef unsigned long long int u_int64_t;
 #endif
+
 typedef int register_t;
 
 #else
@@ -100,13 +109,17 @@ typedef int register_t;
 #define __u_intN_t(N, MODE) \
   typedef unsigned int u_int##N##_t __attribute__ ((__mode__ (MODE)))
 
+#ifndef __int8_t_defined
+#define __int8_t_defined
 __intN_t (8, __QI__);
-__u_intN_t (8, __QI__);
 __intN_t (16, __HI__);
-__u_intN_t (16, __HI__);
 __intN_t (32, __SI__);
-__u_intN_t (32, __SI__);
 __intN_t (64, __DI__);
+#endif
+
+__u_intN_t (8, __QI__);
+__u_intN_t (16, __HI__);
+__u_intN_t (32, __SI__);
 __u_intN_t (64, __DI__);
 
 typedef int register_t __attribute__ ((__mode__ (__word__)));