diff --git a/include/stdbool.h b/include/stdbool.h index 1a9f870bb916372337084702da06bfed1cd9267e..59cce7a9613c67bbb0bb53f2e6ceb6d3ead74763 100644 --- a/include/stdbool.h +++ b/include/stdbool.h @@ -1,9 +1,19 @@ #ifndef _STDBOOL_H #define _STDBOOL_H +#ifndef __cplusplus typedef _Bool bool; #define true 1 #define false 0 +#else /* __cplusplus */ +typedef bool _Bool; +#if __cplusplus < 201103L +#define false false +#define true true +#endif /*__cplusplus < 201103L*/ +#endif /* __cplusplus */ + #define __bool_true_false_are_defined 1 + #endif /* _STDBOOL_H */ diff --git a/include/sys/types.h b/include/sys/types_internal.h similarity index 88% rename from include/sys/types.h rename to include/sys/types_internal.h index 19cf76bb78842cd92c32b428e6fead5c88776eed..5e533e810a131f679be0a1a0c944aec2d907f695 100644 --- a/include/sys/types.h +++ b/include/sys/types_internal.h @@ -1,5 +1,5 @@ -#ifndef _SYS_TYPES_H -#define _SYS_TYPES_H +#ifndef _SYS_TYPES_INTERNAL_H +#define _SYS_TYPES_INTERNAL_H #include <stddef.h> typedef long blksize_t; @@ -31,5 +31,4 @@ typedef unsigned long u_long, ulong; typedef long long quad_t; typedef unsigned long long u_quad_t; typedef char *caddr_t; - -#endif /* _SYS_TYPES_H */ +#endif /* _SYS_TYPES_INTERNAL_H */ diff --git a/src/c/dlmalloc.c b/src/c/dlmalloc.c index 13db7003174602841434df26756549d16fd03df1..8ae1f7a39098ff0821194827af7344def34a5150 100644 --- a/src/c/dlmalloc.c +++ b/src/c/dlmalloc.c @@ -613,7 +613,7 @@ void *memset(void *s, int c, size_t n); #endif /* DARWIN */ #ifndef LACKS_SYS_TYPES_H -#include <sys/types.h> /* For size_t */ +#include <sys/types_internal.h> /* For size_t */ #endif /* LACKS_SYS_TYPES_H */ /* The maximum possible size_t value has all bits set */ diff --git a/src/c/fcntl.c b/src/c/fcntl.c index 76b92022e1017a55f3a52a185f14f26a1eb47e7d..23c48fa12af16a422e1599ea4816b551a6958b03 100644 --- a/src/c/fcntl.c +++ b/src/c/fcntl.c @@ -1,5 +1,5 @@ #include <stdarg.h> -#include <sys/types.h> +#include <sys/types_internal.h> // TODO: Can be implemented in rust when cbindgen supports "..." syntax diff --git a/src/header/mod.rs b/src/header/mod.rs index 81934256d8024abf23c329213ed50fb154aee20a..eb2bbeab0d9a372f2d93a05f0a904ed04aa11af2 100644 --- a/src/header/mod.rs +++ b/src/header/mod.rs @@ -51,6 +51,7 @@ pub mod arch_aarch64_user; pub mod arch_x64_user; pub mod sys_procfs; pub mod sys_random; +pub mod sys_types; pub mod sys_uio; pub mod sys_un; pub mod sys_utsname; diff --git a/src/header/sys_types/cbindgen.toml b/src/header/sys_types/cbindgen.toml new file mode 100644 index 0000000000000000000000000000000000000000..c8b7fca74b08d846e1673db58bfeecec40955eda --- /dev/null +++ b/src/header/sys_types/cbindgen.toml @@ -0,0 +1,7 @@ +sys_includes = ["stddef.h", "sys/types_internal.h", "sys/select.h"] +include_guard = "_SYS_TYPES_H" +language = "C" +style = "Tag" + +[enum] +prefix_with_name = true \ No newline at end of file diff --git a/src/header/sys_types/mod.rs b/src/header/sys_types/mod.rs new file mode 100644 index 0000000000000000000000000000000000000000..c348094fca39b54edeaa2b6b47247069f7632405 --- /dev/null +++ b/src/header/sys_types/mod.rs @@ -0,0 +1,2 @@ +//! sys/types.h +use crate::platform::types::*;