diff --git a/src/header/bits_safamily-t/cbindgen.toml b/src/header/bits_safamily-t/cbindgen.toml new file mode 100644 index 0000000000..9b70509927 --- /dev/null +++ b/src/header/bits_safamily-t/cbindgen.toml @@ -0,0 +1,21 @@ +# POSIX header spec: https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_socket.h.html +# +# The sys/socket header should define this type. +# It is split out to avoid other headers from including all of sys/socket. +# +# POSIX headers that require sa_family_t: +# - netinet/in.h +# - sys/socket.h +# - sys/un.h +sys_includes = [] +include_guard = "_RELIBC_BITS_SA_FAMILY_T_H" +language = "C" +style = "type" +no_includes = true +cpp_compat = true + +[export] +include = ["sa_family_t"] + +[enum] +prefix_with_name = true diff --git a/src/header/bits_safamily-t/mod.rs b/src/header/bits_safamily-t/mod.rs new file mode 100644 index 0000000000..dc5099887f --- /dev/null +++ b/src/header/bits_safamily-t/mod.rs @@ -0,0 +1 @@ +pub type sa_family_t = u16; diff --git a/src/header/mod.rs b/src/header/mod.rs index 58a086bf5c..e2cc04f9af 100644 --- a/src/header/mod.rs +++ b/src/header/mod.rs @@ -9,6 +9,8 @@ pub mod bits_iovec; #[path = "bits_locale-t/mod.rs"] pub mod bits_locale_t; pub mod bits_pthread; +#[path = "bits_safamily-t/mod.rs"] +pub mod bits_safamily_t; #[path = "bits_socklen-t/mod.rs"] pub mod bits_socklen_t; pub mod bits_timespec; diff --git a/src/header/netdb/mod.rs b/src/header/netdb/mod.rs index 2d3778df16..72ca178836 100644 --- a/src/header/netdb/mod.rs +++ b/src/header/netdb/mod.rs @@ -14,13 +14,14 @@ use crate::{ header::{ arpa_inet::inet_aton, bits_arpainet::{htons, ntohl}, + bits_safamily_t::sa_family_t, bits_socklen_t::socklen_t, errno::*, fcntl::O_RDONLY, netinet_in::{in_addr, sockaddr_in, sockaddr_in6}, stdlib::atoi, strings::strcasecmp, - sys_socket::{constants::AF_INET, sa_family_t, sockaddr}, + sys_socket::{constants::AF_INET, sockaddr}, unistd::SEEK_SET, }, platform::{ diff --git a/src/header/netinet_in/mod.rs b/src/header/netinet_in/mod.rs index 4a45b8d7d2..0e4ced5c15 100644 --- a/src/header/netinet_in/mod.rs +++ b/src/header/netinet_in/mod.rs @@ -5,7 +5,7 @@ #![allow(non_camel_case_types)] use crate::{ - header::sys_socket::{sa_family_t, sockaddr_storage}, + header::{bits_safamily_t::sa_family_t, sys_socket::sockaddr_storage}, platform::types::{c_char, c_int}, }; diff --git a/src/header/sys_socket/cbindgen.toml b/src/header/sys_socket/cbindgen.toml index 42474483a2..6372c60a0f 100644 --- a/src/header/sys_socket/cbindgen.toml +++ b/src/header/sys_socket/cbindgen.toml @@ -2,6 +2,7 @@ sys_includes = ["stddef.h", "stdint.h", "sys/types.h"] include_guard = "_RELIBC_SYS_SOCKET_H" after_includes = """ #include // for iovec from sys/uio.h +#include // for sa_family_t #include // for socklen_t """ trailer = """ diff --git a/src/header/sys_socket/mod.rs b/src/header/sys_socket/mod.rs index 6863c867e4..1c0c6d7493 100644 --- a/src/header/sys_socket/mod.rs +++ b/src/header/sys_socket/mod.rs @@ -6,7 +6,7 @@ use core::{mem, ptr}; use crate::{ error::ResultExt, - header::{bits_iovec::iovec, bits_socklen_t::socklen_t}, + header::{bits_iovec::iovec, bits_safamily_t::sa_family_t, bits_socklen_t::socklen_t}, platform::{ PalSocket, Sys, types::{ @@ -17,8 +17,6 @@ use crate::{ pub mod constants; -pub type sa_family_t = u16; - /// See . #[repr(C)] #[derive(Default, CheckVsLibcCrate)] diff --git a/src/header/sys_un/mod.rs b/src/header/sys_un/mod.rs index 2f6d430512..2a5ab35a3f 100644 --- a/src/header/sys_un/mod.rs +++ b/src/header/sys_un/mod.rs @@ -2,7 +2,7 @@ //! //! See . -use crate::{header::sys_socket::sa_family_t, platform::types::c_char}; +use crate::{header::bits_safamily_t::sa_family_t, platform::types::c_char}; /// See . #[repr(C)] diff --git a/src/platform/redox/socket.rs b/src/platform/redox/socket.rs index 6cc407c527..d223c36f5a 100644 --- a/src/platform/redox/socket.rs +++ b/src/platform/redox/socket.rs @@ -14,6 +14,7 @@ use crate::{ header::{ arpa_inet::inet_aton, bits_iovec::iovec, + bits_safamily_t::sa_family_t, bits_socklen_t::socklen_t, errno::{ EAFNOSUPPORT, EDOM, EFAULT, EINVAL, EMSGSIZE, ENOMEM, ENOSYS, ENOTSOCK, EOPNOTSUPP, @@ -24,7 +25,7 @@ use crate::{ sys_select::timeval, sys_socket::{ CMSG_ALIGN, CMSG_DATA, CMSG_FIRSTHDR, CMSG_LEN, CMSG_NXTHDR, CMSG_SPACE, cmsghdr, - constants::*, msghdr, sa_family_t, sockaddr, ucred, + constants::*, msghdr, sockaddr, ucred, }, sys_un::sockaddr_un, },