From 7e1b5b840bac1df400aa85e2f51daad3aacfd052 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 18 Dec 2024 09:33:55 -0800 Subject: [PATCH 1/2] Declare `setdomainname` and `getdomainname` on Android. Android [supports] `setdomainname` and `getdomainname` in API level 26. [supports] https://github.com/aosp-google/bionic/blob/28f9101d76b709febe25977f98530d77580387d1/libc/include/unistd.h#L236 --- libc-test/build.rs | 3 +++ libc-test/semver/android.txt | 2 ++ src/unix/linux_like/android/mod.rs | 3 +++ 3 files changed, 8 insertions(+) diff --git a/libc-test/build.rs b/libc-test/build.rs index b1cff7aa99112..b7608eedb5fc5 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -2081,6 +2081,9 @@ fn test_android(target: &str) { // Added in API level 26, but some tests use level 24. "endgrent" => true, + // Added in API level 26, but some tests use level 24. + "getdomainname" | "setdomainname" => true, + // FIXME: bad function pointers: "isalnum" | "isalpha" | "iscntrl" | "isdigit" | "isgraph" | "islower" | "isprint" | "ispunct" | "isspace" | "isupper" | "isxdigit" | "isblank" | "tolower" diff --git a/libc-test/semver/android.txt b/libc-test/semver/android.txt index 67138f23dfd40..e117113846770 100644 --- a/libc-test/semver/android.txt +++ b/libc-test/semver/android.txt @@ -3324,6 +3324,7 @@ getaddrinfo getchar getchar_unlocked getcwd +getdomainname getegid getenv geteuid @@ -3720,6 +3721,7 @@ sendmsg sendto servent setbuf +setdomainname setegid setenv seteuid diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index 053f0bbbfdf42..5c833fb299e9a 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -4084,6 +4084,9 @@ extern "C" { newpath: *const c_char, flags: c_uint, ) -> c_int; + + pub fn getdomainname(name: *mut c_char, len: size_t) -> c_int; + pub fn setdomainname(name: *const c_char, len: size_t) -> c_int; } cfg_if! { From b0d8e18801b0b8ed77cdf39fa0b58f8c0c9cef94 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Thu, 2 Jan 2025 16:47:30 -0800 Subject: [PATCH 2/2] Move `setdomainname` and `getdomainname` into linux_like. --- src/unix/linux_like/android/mod.rs | 3 --- src/unix/linux_like/emscripten/mod.rs | 2 -- src/unix/linux_like/linux/mod.rs | 2 -- src/unix/linux_like/mod.rs | 3 +++ 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index 5c833fb299e9a..053f0bbbfdf42 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -4084,9 +4084,6 @@ extern "C" { newpath: *const c_char, flags: c_uint, ) -> c_int; - - pub fn getdomainname(name: *mut c_char, len: size_t) -> c_int; - pub fn setdomainname(name: *const c_char, len: size_t) -> c_int; } cfg_if! { diff --git a/src/unix/linux_like/emscripten/mod.rs b/src/unix/linux_like/emscripten/mod.rs index 669d0f43411a3..1156fe264bca7 100644 --- a/src/unix/linux_like/emscripten/mod.rs +++ b/src/unix/linux_like/emscripten/mod.rs @@ -1576,8 +1576,6 @@ extern "C" { pub fn mkstemps(template: *mut c_char, suffixlen: c_int) -> c_int; pub fn nl_langinfo(item: crate::nl_item) -> *mut c_char; - pub fn getdomainname(name: *mut c_char, len: size_t) -> c_int; - pub fn setdomainname(name: *const c_char, len: size_t) -> c_int; pub fn sendmmsg( sockfd: c_int, msgvec: *mut crate::mmsghdr, diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index a9723bb7927ff..f24bc6f3ae422 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -6429,8 +6429,6 @@ extern "C" { pub fn nl_langinfo(item: crate::nl_item) -> *mut c_char; - pub fn getdomainname(name: *mut c_char, len: size_t) -> c_int; - pub fn setdomainname(name: *const c_char, len: size_t) -> c_int; pub fn vhangup() -> c_int; pub fn sync(); pub fn syncfs(fd: c_int) -> c_int; diff --git a/src/unix/linux_like/mod.rs b/src/unix/linux_like/mod.rs index b856ed5cd3584..cc66be62f08bc 100644 --- a/src/unix/linux_like/mod.rs +++ b/src/unix/linux_like/mod.rs @@ -1863,6 +1863,9 @@ extern "C" { locale: crate::locale_t, ) -> size_t; pub fn strptime(s: *const c_char, format: *const c_char, tm: *mut crate::tm) -> *mut c_char; + + pub fn getdomainname(name: *mut c_char, len: size_t) -> c_int; + pub fn setdomainname(name: *const c_char, len: size_t) -> c_int; } // LFS64 extensions