summaryrefslogtreecommitdiff
path: root/libc/src/unix/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'libc/src/unix/mod.rs')
-rw-r--r--libc/src/unix/mod.rs94
1 files changed, 54 insertions, 40 deletions
diff --git a/libc/src/unix/mod.rs b/libc/src/unix/mod.rs
index efaad41..721d241 100644
--- a/libc/src/unix/mod.rs
+++ b/libc/src/unix/mod.rs
@@ -567,7 +567,7 @@ extern {
#[cfg_attr(target_os = "macos", link_name = "fstat$INODE64")]
#[cfg_attr(target_os = "netbsd", link_name = "__fstat50")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "fstat@FBSD_1.0"
)]
pub fn fstat(fildes: ::c_int, buf: *mut stat) -> ::c_int;
@@ -577,7 +577,7 @@ extern {
#[cfg_attr(target_os = "macos", link_name = "stat$INODE64")]
#[cfg_attr(target_os = "netbsd", link_name = "__stat50")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "stat@FBSD_1.0"
)]
pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;
@@ -605,33 +605,13 @@ extern {
#[cfg_attr(target_os = "netbsd", link_name = "__opendir30")]
pub fn opendir(dirname: *const c_char) -> *mut ::DIR;
- #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"),
- link_name = "fdopendir$INODE64")]
- #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
- link_name = "fdopendir$INODE64$UNIX2003")]
- pub fn fdopendir(fd: ::c_int) -> *mut ::DIR;
-
#[cfg_attr(target_os = "macos", link_name = "readdir$INODE64")]
#[cfg_attr(target_os = "netbsd", link_name = "__readdir30")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "readdir@FBSD_1.0"
)]
pub fn readdir(dirp: *mut ::DIR) -> *mut ::dirent;
- #[cfg_attr(target_os = "macos", link_name = "readdir_r$INODE64")]
- #[cfg_attr(target_os = "netbsd", link_name = "__readdir_r30")]
- #[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
- link_name = "readdir_r@FBSD_1.0"
- )]
- /// The 64-bit libc on Solaris and illumos only has readdir_r. If a
- /// 32-bit Solaris or illumos target is ever created, it should use
- /// __posix_readdir_r. See libc(3LIB) on Solaris or illumos:
- /// https://illumos.org/man/3lib/libc
- /// https://docs.oracle.com/cd/E36784_01/html/E36873/libc-3lib.html
- /// https://www.unix.com/man-page/opensolaris/3LIB/libc/
- pub fn readdir_r(dirp: *mut ::DIR, entry: *mut ::dirent,
- result: *mut *mut ::dirent) -> ::c_int;
#[cfg_attr(all(target_os = "macos", target_arch = "x86"),
link_name = "closedir$UNIX2003")]
pub fn closedir(dirp: *mut ::DIR) -> ::c_int;
@@ -641,8 +621,6 @@ extern {
link_name = "rewinddir$INODE64$UNIX2003")]
pub fn rewinddir(dirp: *mut ::DIR);
- pub fn openat(dirfd: ::c_int, pathname: *const ::c_char,
- flags: ::c_int, ...) -> ::c_int;
pub fn fchmodat(dirfd: ::c_int, pathname: *const ::c_char,
mode: ::mode_t, flags: ::c_int) -> ::c_int;
pub fn fchown(fd: ::c_int,
@@ -653,7 +631,7 @@ extern {
flags: ::c_int) -> ::c_int;
#[cfg_attr(target_os = "macos", link_name = "fstatat$INODE64")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "fstatat@FBSD_1.1"
)]
pub fn fstatat(dirfd: ::c_int, pathname: *const ::c_char,
@@ -661,10 +639,6 @@ extern {
pub fn linkat(olddirfd: ::c_int, oldpath: *const ::c_char,
newdirfd: ::c_int, newpath: *const ::c_char,
flags: ::c_int) -> ::c_int;
- pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char,
- mode: ::mode_t) -> ::c_int;
- pub fn readlinkat(dirfd: ::c_int, pathname: *const ::c_char,
- buf: *mut ::c_char, bufsiz: ::size_t) -> ::ssize_t;
pub fn renameat(olddirfd: ::c_int, oldpath: *const ::c_char,
newdirfd: ::c_int, newpath: *const ::c_char)
-> ::c_int;
@@ -725,9 +699,6 @@ extern {
pub fn link(src: *const c_char, dst: *const c_char) -> ::c_int;
pub fn lseek(fd: ::c_int, offset: off_t, whence: ::c_int) -> off_t;
pub fn pathconf(path: *const c_char, name: ::c_int) -> c_long;
- #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
- link_name = "pause$UNIX2003")]
- pub fn pause() -> ::c_int;
pub fn pipe(fds: *mut ::c_int) -> ::c_int;
pub fn posix_memalign(memptr: *mut *mut ::c_void,
align: ::size_t,
@@ -754,6 +725,10 @@ extern {
pub fn tcgetpgrp(fd: ::c_int) -> pid_t;
pub fn tcsetpgrp(fd: ::c_int, pgrp: ::pid_t) -> ::c_int;
pub fn ttyname(fd: ::c_int) -> *mut c_char;
+ #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+ link_name = "ttyname_r$UNIX2003")]
+ pub fn ttyname_r(fd: ::c_int,
+ buf: *mut c_char, buflen: ::size_t) -> ::c_int;
pub fn unlink(c: *const c_char) -> ::c_int;
#[cfg_attr(all(target_os = "macos", target_arch = "x86"),
link_name = "wait$UNIX2003")]
@@ -811,7 +786,7 @@ extern {
#[cfg_attr(target_os = "macos", link_name = "lstat$INODE64")]
#[cfg_attr(target_os = "netbsd", link_name = "__lstat50")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "lstat@FBSD_1.0"
)]
pub fn lstat(path: *const c_char, buf: *mut stat) -> ::c_int;
@@ -832,7 +807,6 @@ extern {
pub fn symlink(path1: *const c_char,
path2: *const c_char) -> ::c_int;
- pub fn truncate(path: *const c_char, length: off_t) -> ::c_int;
pub fn ftruncate(fd: ::c_int, length: off_t) -> ::c_int;
pub fn signal(signum: ::c_int, handler: sighandler_t) -> sighandler_t;
@@ -988,7 +962,7 @@ extern {
#[cfg_attr(target_os = "netbsd", link_name = "__mknod50")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "mknod@FBSD_1.0"
)]
pub fn mknod(pathname: *const ::c_char, mode: ::mode_t,
@@ -1067,8 +1041,6 @@ extern {
#[cfg_attr(target_os = "netbsd", link_name = "__timegm50")]
pub fn timegm(tm: *mut ::tm) -> time_t;
- pub fn getsid(pid: pid_t) -> pid_t;
-
pub fn sysconf(name: ::c_int) -> ::c_long;
pub fn mkfifo(path: *const c_char, mode: mode_t) -> ::c_int;
@@ -1128,6 +1100,48 @@ extern {
}
cfg_if! {
+ if #[cfg(not(target_os = "redox"))] {
+ extern {
+ pub fn getsid(pid: pid_t) -> pid_t;
+ pub fn truncate(path: *const c_char, length: off_t) -> ::c_int;
+ #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+ link_name = "pause$UNIX2003")]
+ pub fn pause() -> ::c_int;
+
+ pub fn readlinkat(dirfd: ::c_int,
+ pathname: *const ::c_char,
+ buf: *mut ::c_char,
+ bufsiz: ::size_t) -> ::ssize_t;
+ pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char,
+ mode: ::mode_t) -> ::c_int;
+ pub fn openat(dirfd: ::c_int, pathname: *const ::c_char,
+ flags: ::c_int, ...) -> ::c_int;
+
+ #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"),
+ link_name = "fdopendir$INODE64")]
+ #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+ link_name = "fdopendir$INODE64$UNIX2003")]
+ pub fn fdopendir(fd: ::c_int) -> *mut ::DIR;
+
+ #[cfg_attr(target_os = "macos", link_name = "readdir_r$INODE64")]
+ #[cfg_attr(target_os = "netbsd", link_name = "__readdir_r30")]
+ #[cfg_attr(
+ all(target_os = "freebsd", freebsd11),
+ link_name = "readdir_r@FBSD_1.0"
+ )]
+ /// The 64-bit libc on Solaris and illumos only has readdir_r. If a
+ /// 32-bit Solaris or illumos target is ever created, it should use
+ /// __posix_readdir_r. See libc(3LIB) on Solaris or illumos:
+ /// https://illumos.org/man/3lib/libc
+ /// https://docs.oracle.com/cd/E36784_01/html/E36873/libc-3lib.html
+ /// https://www.unix.com/man-page/opensolaris/3LIB/libc/
+ pub fn readdir_r(dirp: *mut ::DIR, entry: *mut ::dirent,
+ result: *mut *mut ::dirent) -> ::c_int;
+ }
+ }
+}
+
+cfg_if! {
if #[cfg(not(any(target_os = "solaris", target_os = "illumos")))] {
extern {
pub fn cfmakeraw(termios: *mut ::termios);
@@ -1147,8 +1161,8 @@ cfg_if! {
} else if #[cfg(any(target_os = "linux",
target_os = "android",
target_os = "emscripten"))] {
- mod notbsd;
- pub use self::notbsd::*;
+ mod linux_like;
+ pub use self::linux_like::*;
} else if #[cfg(any(target_os = "macos",
target_os = "ios",
target_os = "freebsd",