Skip to content

Commit d9b2927

Browse files
authored
Merge pull request #3612 from magicant/confstr-linux
Support confstr on Linux
2 parents d3f2c14 + 51512d1 commit d9b2927

File tree

10 files changed

+95
-10
lines changed

10 files changed

+95
-10
lines changed

libc-test/semver/apple.txt

-1
Original file line numberDiff line numberDiff line change
@@ -1818,7 +1818,6 @@ clock_getres
18181818
clonefile
18191819
clonefileat
18201820
cmsghdr
1821-
confstr
18221821
connectx
18231822
copyfile
18241823
copyfile_callback_t

libc-test/semver/linux-gnu.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,8 @@ XSK_UNALIGNED_BUF_ADDR_MASK
505505
XSK_UNALIGNED_BUF_OFFSET_SHIFT
506506
_CS_GNU_LIBC_VERSION
507507
_CS_GNU_LIBPTHREAD_VERSION
508-
_CS_PATH
508+
_CS_V6_ENV
509+
_CS_V7_ENV
509510
_SC_2_C_VERSION
510511
_SC_BASE
511512
_SC_CHARCLASS_NAME_MAX
@@ -608,7 +609,6 @@ asctime_r
608609
backtrace
609610
clock_adjtime
610611
close_range
611-
confstr
612612
copy_file_range
613613
ctermid
614614
ctime_r

libc-test/semver/linux-musl.txt

+2
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ XDP_USE_SG
6060
XDP_ZEROCOPY
6161
XSK_UNALIGNED_BUF_ADDR_MASK
6262
XSK_UNALIGNED_BUF_OFFSET_SHIFT
63+
_CS_V6_ENV
64+
_CS_V7_ENV
6365
adjtimex
6466
aio_cancel
6567
aio_error

libc-test/semver/linux.txt

+36
Original file line numberDiff line numberDiff line change
@@ -3369,6 +3369,42 @@ XATTR_REPLACE
33693369
XTABS
33703370
YESEXPR
33713371
YESSTR
3372+
_CS_PATH
3373+
_CS_POSIX_V5_WIDTH_RESTRICTED_ENVS
3374+
_CS_POSIX_V6_ILP32_OFF32_CFLAGS
3375+
_CS_POSIX_V6_ILP32_OFF32_LDFLAGS
3376+
_CS_POSIX_V6_ILP32_OFF32_LIBS
3377+
_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
3378+
_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
3379+
_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
3380+
_CS_POSIX_V6_ILP32_OFFBIG_LIBS
3381+
_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
3382+
_CS_POSIX_V6_LP64_OFF64_CFLAGS
3383+
_CS_POSIX_V6_LP64_OFF64_LDFLAGS
3384+
_CS_POSIX_V6_LP64_OFF64_LIBS
3385+
_CS_POSIX_V6_LP64_OFF64_LINTFLAGS
3386+
_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
3387+
_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
3388+
_CS_POSIX_V6_LPBIG_OFFBIG_LIBS
3389+
_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
3390+
_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
3391+
_CS_POSIX_V7_ILP32_OFF32_CFLAGS
3392+
_CS_POSIX_V7_ILP32_OFF32_LDFLAGS
3393+
_CS_POSIX_V7_ILP32_OFF32_LIBS
3394+
_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS
3395+
_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
3396+
_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
3397+
_CS_POSIX_V7_ILP32_OFFBIG_LIBS
3398+
_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS
3399+
_CS_POSIX_V7_LP64_OFF64_CFLAGS
3400+
_CS_POSIX_V7_LP64_OFF64_LDFLAGS
3401+
_CS_POSIX_V7_LP64_OFF64_LIBS
3402+
_CS_POSIX_V7_LP64_OFF64_LINTFLAGS
3403+
_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
3404+
_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
3405+
_CS_POSIX_V7_LPBIG_OFFBIG_LIBS
3406+
_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
3407+
_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
33723408
_IOFBF
33733409
_IOLBF
33743410
_IONBF

libc-test/semver/unix.txt

+1
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,7 @@ clockid_t
493493
close
494494
closedir
495495
closelog
496+
confstr
496497
connect
497498
creat
498499
dev_t

src/unix/bsd/apple/mod.rs

-5
Original file line numberDiff line numberDiff line change
@@ -5599,11 +5599,6 @@ extern "C" {
55995599
pub fn fchflags(fd: ::c_int, flags: ::c_uint) -> ::c_int;
56005600
pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
56015601
pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
5602-
#[cfg_attr(
5603-
all(target_os = "macos", target_arch = "x86"),
5604-
link_name = "confstr$UNIX2003"
5605-
)]
5606-
pub fn confstr(name: ::c_int, buf: *mut ::c_char, len: ::size_t) -> ::size_t;
56075602
pub fn lio_listio(
56085603
mode: ::c_int,
56095604
aiocb_list: *const *mut aiocb,

src/unix/linux_like/linux/gnu/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -877,7 +877,8 @@ pub const FILENAME_MAX: ::c_uint = 4096;
877877
pub const POSIX_MADV_DONTNEED: ::c_int = 4;
878878
pub const _CS_GNU_LIBC_VERSION: ::c_int = 2;
879879
pub const _CS_GNU_LIBPTHREAD_VERSION: ::c_int = 3;
880-
pub const _CS_PATH: ::c_int = 0;
880+
pub const _CS_V6_ENV: ::c_int = 1148;
881+
pub const _CS_V7_ENV: ::c_int = 1149;
881882
pub const _SC_EQUIV_CLASS_MAX: ::c_int = 41;
882883
pub const _SC_CHARCLASS_NAME_MAX: ::c_int = 45;
883884
pub const _SC_PII: ::c_int = 53;
@@ -1525,7 +1526,6 @@ extern "C" {
15251526
pub fn asctime_r(tm: *const ::tm, buf: *mut ::c_char) -> *mut ::c_char;
15261527
pub fn ctime_r(timep: *const time_t, buf: *mut ::c_char) -> *mut ::c_char;
15271528

1528-
pub fn confstr(name: ::c_int, buf: *mut ::c_char, len: ::size_t) -> ::size_t;
15291529
pub fn dirname(path: *mut ::c_char) -> *mut ::c_char;
15301530
/// POSIX version of `basename(3)`, defined in `libgen.h`.
15311531
#[link_name = "__xpg_basename"]

src/unix/linux_like/linux/mod.rs

+37
Original file line numberDiff line numberDiff line change
@@ -2027,6 +2027,43 @@ pub const _SC_XOPEN_STREAMS: ::c_int = 246;
20272027
pub const _SC_THREAD_ROBUST_PRIO_INHERIT: ::c_int = 247;
20282028
pub const _SC_THREAD_ROBUST_PRIO_PROTECT: ::c_int = 248;
20292029

2030+
pub const _CS_PATH: ::c_int = 0;
2031+
pub const _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS: ::c_int = 1;
2032+
pub const _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS: ::c_int = 4;
2033+
pub const _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS: ::c_int = 5;
2034+
pub const _CS_POSIX_V6_ILP32_OFF32_CFLAGS: ::c_int = 1116;
2035+
pub const _CS_POSIX_V6_ILP32_OFF32_LDFLAGS: ::c_int = 1117;
2036+
pub const _CS_POSIX_V6_ILP32_OFF32_LIBS: ::c_int = 1118;
2037+
pub const _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS: ::c_int = 1119;
2038+
pub const _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS: ::c_int = 1120;
2039+
pub const _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS: ::c_int = 1121;
2040+
pub const _CS_POSIX_V6_ILP32_OFFBIG_LIBS: ::c_int = 1122;
2041+
pub const _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS: ::c_int = 1123;
2042+
pub const _CS_POSIX_V6_LP64_OFF64_CFLAGS: ::c_int = 1124;
2043+
pub const _CS_POSIX_V6_LP64_OFF64_LDFLAGS: ::c_int = 1125;
2044+
pub const _CS_POSIX_V6_LP64_OFF64_LIBS: ::c_int = 1126;
2045+
pub const _CS_POSIX_V6_LP64_OFF64_LINTFLAGS: ::c_int = 1127;
2046+
pub const _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS: ::c_int = 1128;
2047+
pub const _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS: ::c_int = 1129;
2048+
pub const _CS_POSIX_V6_LPBIG_OFFBIG_LIBS: ::c_int = 1130;
2049+
pub const _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS: ::c_int = 1131;
2050+
pub const _CS_POSIX_V7_ILP32_OFF32_CFLAGS: ::c_int = 1132;
2051+
pub const _CS_POSIX_V7_ILP32_OFF32_LDFLAGS: ::c_int = 1133;
2052+
pub const _CS_POSIX_V7_ILP32_OFF32_LIBS: ::c_int = 1134;
2053+
pub const _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS: ::c_int = 1135;
2054+
pub const _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS: ::c_int = 1136;
2055+
pub const _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS: ::c_int = 1137;
2056+
pub const _CS_POSIX_V7_ILP32_OFFBIG_LIBS: ::c_int = 1138;
2057+
pub const _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS: ::c_int = 1139;
2058+
pub const _CS_POSIX_V7_LP64_OFF64_CFLAGS: ::c_int = 1140;
2059+
pub const _CS_POSIX_V7_LP64_OFF64_LDFLAGS: ::c_int = 1141;
2060+
pub const _CS_POSIX_V7_LP64_OFF64_LIBS: ::c_int = 1142;
2061+
pub const _CS_POSIX_V7_LP64_OFF64_LINTFLAGS: ::c_int = 1143;
2062+
pub const _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS: ::c_int = 1144;
2063+
pub const _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS: ::c_int = 1145;
2064+
pub const _CS_POSIX_V7_LPBIG_OFFBIG_LIBS: ::c_int = 1146;
2065+
pub const _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS: ::c_int = 1147;
2066+
20302067
pub const RLIM_SAVED_MAX: ::rlim_t = RLIM_INFINITY;
20312068
pub const RLIM_SAVED_CUR: ::rlim_t = RLIM_INFINITY;
20322069

src/unix/linux_like/linux/musl/mod.rs

+3
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,9 @@ pub const XSK_UNALIGNED_BUF_ADDR_MASK: ::c_ulonglong = (1 << XSK_UNALIGNED_BUF_O
895895

896896
pub const XDP_PKT_CONTD: ::__u32 = 1 << 0;
897897

898+
pub const _CS_V6_ENV: ::c_int = 1148;
899+
pub const _CS_V7_ENV: ::c_int = 1149;
900+
898901
cfg_if! {
899902
if #[cfg(target_arch = "s390x")] {
900903
pub const POSIX_FADV_DONTNEED: ::c_int = 6;

src/unix/mod.rs

+12
Original file line numberDiff line numberDiff line change
@@ -1478,6 +1478,18 @@ cfg_if! {
14781478
}
14791479
}
14801480

1481+
cfg_if! {
1482+
if #[cfg(not(target_os = "android"))] {
1483+
extern "C" {
1484+
#[cfg_attr(
1485+
all(target_os = "macos", target_arch = "x86"),
1486+
link_name = "confstr$UNIX2003"
1487+
)]
1488+
pub fn confstr(name: ::c_int, buf: *mut ::c_char, len: ::size_t) -> ::size_t;
1489+
}
1490+
}
1491+
}
1492+
14811493
cfg_if! {
14821494
if #[cfg(not(target_os = "aix"))] {
14831495
extern "C" {

0 commit comments

Comments
 (0)