summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Keller <philipp.keller@gmail.com>2017-02-23 06:17:45 +0100
committerPhilipp Keller <philipp.keller@gmail.com>2017-02-23 06:17:45 +0100
commit780cd2897cf9485730e3e4c20b62ac908a6546bd (patch)
tree48a20ca91c1bc6f98d6283b1f131dcf56e9c94c8
parent437c54c3e1d02e13ed42f618a463d73cc147baad (diff)
parent16832447b402c0e6801877ff2ec044993c1862eb (diff)
downloadrust-libc-780cd2897cf9485730e3e4c20b62ac908a6546bd.tar.gz
Merge branch 'master' of https://github.com/rust-lang/libc
-rw-r--r--libc-test/build.rs3
-rw-r--r--src/unix/bsd/freebsdlike/freebsd/mod.rs30
-rw-r--r--src/unix/mod.rs7
-rw-r--r--src/unix/notbsd/android/mod.rs17
4 files changed, 54 insertions, 3 deletions
diff --git a/libc-test/build.rs b/libc-test/build.rs
index fc4db1e9e1..2c5e2328e0 100644
--- a/libc-test/build.rs
+++ b/libc-test/build.rs
@@ -101,6 +101,7 @@ fn main() {
cfg.header("poll.h");
cfg.header("syslog.h");
cfg.header("semaphore.h");
+ cfg.header("sys/statvfs.h");
}
if android {
@@ -111,7 +112,6 @@ fn main() {
} else if !windows {
cfg.header("glob.h");
cfg.header("ifaddrs.h");
- cfg.header("sys/statvfs.h");
cfg.header("langinfo.h");
if !openbsd && !freebsd && !dragonfly {
@@ -195,6 +195,7 @@ fn main() {
cfg.header("pthread_np.h");
cfg.header("sched.h");
cfg.header("ufs/ufs/quota.h");
+ cfg.header("sys/jail.h");
}
if netbsd {
diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs
index b02e9a7760..f0cbaf116c 100644
--- a/src/unix/bsd/freebsdlike/freebsd/mod.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs
@@ -47,6 +47,17 @@ s! {
pub d_name: [::c_char; 256],
}
+ pub struct jail {
+ pub version: u32,
+ pub path: *mut ::c_char,
+ pub hostname: *mut ::c_char,
+ pub jailname: *mut ::c_char,
+ pub ip4s: ::c_uint,
+ pub ip6s: ::c_uint,
+ pub ip4: *mut ::in_addr,
+ pub ip6: *mut ::in6_addr,
+ }
+
pub struct sigevent {
pub sigev_notify: ::c_int,
pub sigev_signo: ::c_int,
@@ -322,6 +333,17 @@ pub const TIOCSIG: ::c_uint = 0x2004745f;
pub const TIOCM_DCD: ::c_int = 0x40;
pub const H4DISC: ::c_int = 0x7;
+pub const JAIL_API_VERSION: u32 = 2;
+pub const JAIL_CREATE: ::c_int = 0x01;
+pub const JAIL_UPDATE: ::c_int = 0x02;
+pub const JAIL_ATTACH: ::c_int = 0x04;
+pub const JAIL_DYING: ::c_int = 0x08;
+pub const JAIL_SET_MASK: ::c_int = 0x0f;
+pub const JAIL_GET_MASK: ::c_int = 0x08;
+pub const JAIL_SYS_DISABLE: ::c_int = 0;
+pub const JAIL_SYS_NEW: ::c_int = 1;
+pub const JAIL_SYS_INHERIT: ::c_int = 2;
+
// The *_MAXID constants never should've been used outside of the
// FreeBSD base system. And with the exception of CTL_P1003_1B_MAXID,
// they were all removed in svn r262489. They remain here for backwards
@@ -385,6 +407,14 @@ extern {
pub fn clock_gettime(clk_id: clockid_t, tp: *mut ::timespec) -> ::c_int;
pub fn clock_settime(clk_id: clockid_t, tp: *const ::timespec) -> ::c_int;
+ pub fn jail(jail: *mut ::jail) -> ::c_int;
+ pub fn jail_attach(jid: ::c_int) -> ::c_int;
+ pub fn jail_remove(jid: ::c_int) -> ::c_int;
+ pub fn jail_get(iov: *mut ::iovec, niov: ::c_uint, flags: ::c_int)
+ -> ::c_int;
+ pub fn jail_set(iov: *mut ::iovec, niov: ::c_uint, flags: ::c_int)
+ -> ::c_int;
+
pub fn posix_fallocate(fd: ::c_int, offset: ::off_t,
len: ::off_t) -> ::c_int;
pub fn posix_fadvise(fd: ::c_int, offset: ::off_t, len: ::off_t,
diff --git a/src/unix/mod.rs b/src/unix/mod.rs
index a96ee027b2..ac6a19891d 100644
--- a/src/unix/mod.rs
+++ b/src/unix/mod.rs
@@ -350,6 +350,9 @@ extern {
link_name = "opendir$INODE64$UNIX2003")]
#[cfg_attr(target_os = "netbsd", link_name = "__opendir30")]
pub fn opendir(dirname: *const c_char) -> *mut ::DIR;
+ #[cfg_attr(target_os = "macos", link_name = "readdir$INODE64")]
+ #[cfg_attr(target_os = "netbsd", link_name = "__readdir30")]
+ 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(target_os = "solaris", link_name = "__posix_readdir_r")]
@@ -749,6 +752,8 @@ extern {
pshared: ::c_int,
value: ::c_uint)
-> ::c_int;
+ pub fn statvfs(path: *const c_char, buf: *mut statvfs) -> ::c_int;
+ pub fn fstatvfs(fd: ::c_int, buf: *mut statvfs) -> ::c_int;
}
// TODO: get rid of this cfg(not(...))
@@ -828,8 +833,6 @@ extern {
pub fn ftello(stream: *mut ::FILE) -> ::off_t;
#[cfg_attr(target_os = "netbsd", link_name = "__timegm50")]
pub fn timegm(tm: *mut ::tm) -> time_t;
- pub fn statvfs(path: *const c_char, buf: *mut statvfs) -> ::c_int;
- pub fn fstatvfs(fd: ::c_int, buf: *mut statvfs) -> ::c_int;
#[cfg_attr(all(target_os = "macos", target_arch = "x86"),
link_name = "tcdrain$UNIX2003")]
pub fn tcdrain(fd: ::c_int) -> ::c_int;
diff --git a/src/unix/notbsd/android/mod.rs b/src/unix/notbsd/android/mod.rs
index 4b4e26222a..ec6aa90ef4 100644
--- a/src/unix/notbsd/android/mod.rs
+++ b/src/unix/notbsd/android/mod.rs
@@ -136,6 +136,20 @@ s! {
pub ut_addr_v6: [::int32_t; 4],
unused: [::c_char; 20],
}
+
+ pub struct statvfs {
+ pub f_bsize: ::c_ulong,
+ pub f_frsize: ::c_ulong,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+ pub f_files: ::fsfilcnt_t,
+ pub f_ffree: ::fsfilcnt_t,
+ pub f_favail: ::fsfilcnt_t,
+ pub f_fsid: ::c_ulong,
+ pub f_flag: ::c_ulong,
+ pub f_namemax: ::c_ulong,
+ }
}
pub const O_TRUNC: ::c_int = 512;
@@ -801,6 +815,9 @@ extern {
pub fn utmpname(name: *const ::c_char) -> ::c_int;
pub fn setutent();
pub fn getutent() -> *mut utmp;
+
+ pub fn posix_fallocate(fd: ::c_int, offset: ::off_t,
+ len: ::off_t) -> ::c_int;
}
cfg_if! {