diff options
-rw-r--r-- | libc-test/build.rs | 2 | ||||
-rw-r--r-- | libc-test/semver/linux-gnu.txt | 18 | ||||
-rw-r--r-- | libc-test/semver/linux.txt | 17 | ||||
-rw-r--r-- | src/unix/haiku/mod.rs | 13 | ||||
-rw-r--r-- | src/unix/linux_like/linux/gnu/mod.rs | 31 | ||||
-rw-r--r-- | src/unix/linux_like/linux/mod.rs | 21 |
6 files changed, 63 insertions, 39 deletions
diff --git a/libc-test/build.rs b/libc-test/build.rs index 80b73e911b..33558a9345 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -4123,7 +4123,6 @@ fn test_haiku(target: &str) { "arpa/nameser.h", "arpa/nameser_compat.h", "assert.h", - "bsd_mem.h", "complex.h", "ctype.h", "dirent.h", @@ -4228,6 +4227,7 @@ fn test_haiku(target: &str) { "libutil.h", "link.h", "pty.h", + "stringlist.h", } // Native API diff --git a/libc-test/semver/linux-gnu.txt b/libc-test/semver/linux-gnu.txt index f34e0681c3..1a5f6ab25a 100644 --- a/libc-test/semver/linux-gnu.txt +++ b/libc-test/semver/linux-gnu.txt @@ -33,23 +33,6 @@ CGROUP2_SUPER_MAGIC CGROUP_SUPER_MAGIC CODA_SUPER_MAGIC CRAMFS_MAGIC -DCCP_SERVICE_LIST_MAX_LEN -DCCP_SOCKOPT_AVAILABLE_CCIDS -DCCP_SOCKOPT_CCID -DCCP_SOCKOPT_CCID_RX_INFO -DCCP_SOCKOPT_CCID_TX_INFO -DCCP_SOCKOPT_CHANGE_L -DCCP_SOCKOPT_CHANGE_R -DCCP_SOCKOPT_GET_CUR_MPS -DCCP_SOCKOPT_PACKET_SIZE -DCCP_SOCKOPT_QPOLICY_ID -DCCP_SOCKOPT_QPOLICY_TXQLEN -DCCP_SOCKOPT_RECV_CSCOV -DCCP_SOCKOPT_RX_CCID -DCCP_SOCKOPT_SEND_CSCOV -DCCP_SOCKOPT_SERVER_TIMEWAIT -DCCP_SOCKOPT_SERVICE -DCCP_SOCKOPT_TX_CCID DEAD_PROCESS DEBUGFS_MAGIC DEVPTS_SUPER_MAGIC @@ -670,3 +653,4 @@ strptime dirname posix_basename gnu_basename +getmntent_r diff --git a/libc-test/semver/linux.txt b/libc-test/semver/linux.txt index e7eefafd18..cdb0079144 100644 --- a/libc-test/semver/linux.txt +++ b/libc-test/semver/linux.txt @@ -334,6 +334,23 @@ DAY_4 DAY_5 DAY_6 DAY_7 +DCCP_SERVICE_LIST_MAX_LEN +DCCP_SOCKOPT_AVAILABLE_CCIDS +DCCP_SOCKOPT_CCID +DCCP_SOCKOPT_CCID_RX_INFO +DCCP_SOCKOPT_CCID_TX_INFO +DCCP_SOCKOPT_CHANGE_L +DCCP_SOCKOPT_CHANGE_R +DCCP_SOCKOPT_GET_CUR_MPS +DCCP_SOCKOPT_PACKET_SIZE +DCCP_SOCKOPT_QPOLICY_ID +DCCP_SOCKOPT_QPOLICY_TXQLEN +DCCP_SOCKOPT_RECV_CSCOV +DCCP_SOCKOPT_RX_CCID +DCCP_SOCKOPT_SEND_CSCOV +DCCP_SOCKOPT_SERVER_TIMEWAIT +DCCP_SOCKOPT_SERVICE +DCCP_SOCKOPT_TX_CCID DT_UNKNOWN D_FMT D_T_FMT diff --git a/src/unix/haiku/mod.rs b/src/unix/haiku/mod.rs index 1c40c51e66..89f8806eb4 100644 --- a/src/unix/haiku/mod.rs +++ b/src/unix/haiku/mod.rs @@ -55,6 +55,8 @@ pub type ACTION = ::c_int; pub type posix_spawnattr_t = *mut ::c_void; pub type posix_spawn_file_actions_t = *mut ::c_void; +pub type StringList = _stringlist; + #[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum timezone {} impl ::Copy for timezone {} @@ -437,6 +439,12 @@ s! { pub flag: *mut ::c_int, pub val: ::c_int, } + + pub struct _stringlist { + pub sl_str: *mut *mut ::c_char, + pub sl_max: ::size_t, + pub sl_cur: ::size_t, + } } s_no_extra_traits! { @@ -2017,6 +2025,11 @@ extern "C" { pub fn strsep(string: *mut *mut ::c_char, delimiters: *const ::c_char) -> *mut ::c_char; pub fn explicit_bzero(buf: *mut ::c_void, len: ::size_t); pub fn login_tty(_fd: ::c_int) -> ::c_int; + + pub fn sl_init() -> *mut StringList; + pub fn sl_add(sl: *mut StringList, n: *mut ::c_char) -> ::c_int; + pub fn sl_free(sl: *mut StringList, i: ::c_int); + pub fn sl_find(sl: *mut StringList, n: *mut ::c_char) -> *mut ::c_char; } cfg_if! { diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index dbec992f0c..1aad8361ad 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -730,27 +730,6 @@ pub const PF_NFC: ::c_int = AF_NFC; pub const PF_VSOCK: ::c_int = AF_VSOCK; pub const PF_XDP: ::c_int = AF_XDP; -/* DCCP socket options */ -pub const DCCP_SOCKOPT_PACKET_SIZE: ::c_int = 1; -pub const DCCP_SOCKOPT_SERVICE: ::c_int = 2; -pub const DCCP_SOCKOPT_CHANGE_L: ::c_int = 3; -pub const DCCP_SOCKOPT_CHANGE_R: ::c_int = 4; -pub const DCCP_SOCKOPT_GET_CUR_MPS: ::c_int = 5; -pub const DCCP_SOCKOPT_SERVER_TIMEWAIT: ::c_int = 6; -pub const DCCP_SOCKOPT_SEND_CSCOV: ::c_int = 10; -pub const DCCP_SOCKOPT_RECV_CSCOV: ::c_int = 11; -pub const DCCP_SOCKOPT_AVAILABLE_CCIDS: ::c_int = 12; -pub const DCCP_SOCKOPT_CCID: ::c_int = 13; -pub const DCCP_SOCKOPT_TX_CCID: ::c_int = 14; -pub const DCCP_SOCKOPT_RX_CCID: ::c_int = 15; -pub const DCCP_SOCKOPT_QPOLICY_ID: ::c_int = 16; -pub const DCCP_SOCKOPT_QPOLICY_TXQLEN: ::c_int = 17; -pub const DCCP_SOCKOPT_CCID_RX_INFO: ::c_int = 128; -pub const DCCP_SOCKOPT_CCID_TX_INFO: ::c_int = 192; - -/// maximum number of services provided on the same listening port -pub const DCCP_SERVICE_LIST_MAX_LEN: ::c_int = 32; - pub const SIGEV_THREAD_ID: ::c_int = 4; pub const BUFSIZ: ::c_uint = 8192; @@ -1395,6 +1374,16 @@ extern "C" { ) -> ::c_int; } +// mntent.h +extern "C" { + pub fn getmntent_r( + stream: *mut ::FILE, + mntbuf: *mut ::mntent, + buf: *mut ::c_char, + buflen: ::c_int, + ) -> *mut ::mntent; +} + cfg_if! { if #[cfg(any(target_arch = "x86", target_arch = "arm", diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index 6ac0f7092a..1d272d601d 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -3800,6 +3800,27 @@ pub const SCTP_PR_SCTP_ALL: ::c_int = 1 << 7; pub const SCTP_NOTIFICATION: ::c_int = MSG_NOTIFICATION; pub const SCTP_EOF: ::c_int = ::MSG_FIN; +/* DCCP socket options */ +pub const DCCP_SOCKOPT_PACKET_SIZE: ::c_int = 1; +pub const DCCP_SOCKOPT_SERVICE: ::c_int = 2; +pub const DCCP_SOCKOPT_CHANGE_L: ::c_int = 3; +pub const DCCP_SOCKOPT_CHANGE_R: ::c_int = 4; +pub const DCCP_SOCKOPT_GET_CUR_MPS: ::c_int = 5; +pub const DCCP_SOCKOPT_SERVER_TIMEWAIT: ::c_int = 6; +pub const DCCP_SOCKOPT_SEND_CSCOV: ::c_int = 10; +pub const DCCP_SOCKOPT_RECV_CSCOV: ::c_int = 11; +pub const DCCP_SOCKOPT_AVAILABLE_CCIDS: ::c_int = 12; +pub const DCCP_SOCKOPT_CCID: ::c_int = 13; +pub const DCCP_SOCKOPT_TX_CCID: ::c_int = 14; +pub const DCCP_SOCKOPT_RX_CCID: ::c_int = 15; +pub const DCCP_SOCKOPT_QPOLICY_ID: ::c_int = 16; +pub const DCCP_SOCKOPT_QPOLICY_TXQLEN: ::c_int = 17; +pub const DCCP_SOCKOPT_CCID_RX_INFO: ::c_int = 128; +pub const DCCP_SOCKOPT_CCID_TX_INFO: ::c_int = 192; + +/// maximum number of services provided on the same listening port +pub const DCCP_SERVICE_LIST_MAX_LEN: ::c_int = 32; + f! { pub fn NLA_ALIGN(len: ::c_int) -> ::c_int { return ((len) + NLA_ALIGNTO - 1) & !(NLA_ALIGNTO - 1) |