pub type c_char = i8; pub type c_long = i64; pub type c_ulong = u64; pub type wchar_t = i16; pub type off_t = c_long; pub type mode_t = u16; pub type time_t = i64; pub type pid_t = usize; pub type gid_t = usize; pub type uid_t = usize; pub type in_addr_t = u32; pub type in_port_t = u16; pub type socklen_t = u32; pub type sa_family_t = u16; s! { pub struct in_addr { pub s_addr: in_addr_t, } pub struct in6_addr { pub s6_addr: [u8; 16], __align: [u32; 0], } pub struct sockaddr { pub sa_family: sa_family_t, pub sa_data: [::c_char; 14], } pub struct sockaddr_in { pub sin_family: sa_family_t, pub sin_port: ::in_port_t, pub sin_addr: ::in_addr, pub sin_zero: [u8; 8], } pub struct sockaddr_in6 { pub sin6_family: sa_family_t, pub sin6_port: in_port_t, pub sin6_flowinfo: u32, pub sin6_addr: ::in6_addr, pub sin6_scope_id: u32, } } pub const STDIN_FILENO: ::c_int = 0; pub const STDOUT_FILENO: ::c_int = 1; pub const STDERR_FILENO: ::c_int = 2; pub const EXIT_FAILURE: ::c_int = 1; pub const EXIT_SUCCESS: ::c_int = 0; pub const S_ISUID: ::c_int = 0x800; pub const S_ISGID: ::c_int = 0x400; pub const S_ISVTX: ::c_int = 0x200; pub const S_IFIFO: mode_t = 0x1000; pub const S_IFCHR: mode_t = 0x2000; pub const S_IFBLK: mode_t = 0x6000; pub const S_IFDIR: mode_t = 0x4000; pub const S_IFREG: mode_t = 0x8000; pub const S_IFLNK: mode_t = 0xA000; pub const S_IFSOCK: mode_t = 0xC000; pub const S_IFMT: mode_t = 0xF000; pub const S_IEXEC: mode_t = 0x40; pub const S_IWRITE: mode_t = 0x80; pub const S_IREAD: mode_t = 0x100; pub const S_IRWXU: mode_t = 0x1C0; pub const S_IXUSR: mode_t = 0x40; pub const S_IWUSR: mode_t = 0x80; pub const S_IRUSR: mode_t = 0x100; pub const S_IRWXG: mode_t = 0x38; pub const S_IXGRP: mode_t = 0x8; pub const S_IWGRP: mode_t = 0x10; pub const S_IRGRP: mode_t = 0x20; pub const S_IRWXO: mode_t = 0x7; pub const S_IXOTH: mode_t = 0x1; pub const S_IWOTH: mode_t = 0x2; pub const S_IROTH: mode_t = 0x4; extern { pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void; pub fn read(fd: ::c_int, buf: *mut ::c_void, count: ::size_t) -> ::ssize_t; pub fn write(fd: ::c_int, buf: *const ::c_void, count: ::size_t) -> ::ssize_t; } #[link(name = "c")] #[link(name = "m")] extern {}