coreutils/src/uucore/utmpx.rs
2016-08-04 22:37:54 +08:00

153 lines
4.5 KiB
Rust

#![allow(dead_code, non_camel_case_types)]
extern crate libc;
pub use self::utmpx::{UT_NAMESIZE, UT_LINESIZE, DEFAULT_FILE, USER_PROCESS, BOOT_TIME};
pub use self::utmpx::c_utmp;
extern "C" {
pub fn getutxent() -> *const c_utmp;
pub fn getutxid(ut: *const c_utmp) -> *const c_utmp;
pub fn getutxline(ut: *const c_utmp) -> *const c_utmp;
pub fn pututxline(ut: *const c_utmp) -> *const c_utmp;
pub fn setutxent();
pub fn endutxent();
#[cfg(any(target_os = "macos", target_os = "linux"))]
pub fn utmpxname(file: *const libc::c_char) -> libc::c_int;
}
#[cfg(target_os = "freebsd")]
pub unsafe extern fn utmpxname(_file: *const libc::c_char) -> libc::c_int {
0
}
#[cfg(target_os = "linux")]
mod utmpx {
use super::libc;
pub static DEFAULT_FILE: &'static str = "/var/run/utmp";
pub const UT_LINESIZE: usize = 32;
pub const UT_NAMESIZE: usize = 32;
pub const UT_IDSIZE: usize = 4;
pub const UT_HOSTSIZE: usize = 256;
pub const EMPTY: libc::c_short = 0;
pub const RUN_LVL: libc::c_short = 1;
pub const BOOT_TIME: libc::c_short = 2;
pub const NEW_TIME: libc::c_short = 3;
pub const OLD_TIME: libc::c_short = 4;
pub const INIT_PROCESS: libc::c_short = 5;
pub const LOGIN_PROCESS: libc::c_short = 6;
pub const USER_PROCESS: libc::c_short = 7;
pub const DEAD_PROCESS: libc::c_short = 8;
pub const ACCOUNTING: libc::c_short = 9;
#[repr(C)]
pub struct __exit_status {
pub e_termination: libc::c_short,
pub e_exit: libc::c_short,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct __timeval {
pub tv_sec: libc::int32_t,
pub tv_usec: libc::int32_t,
}
#[repr(C)]
pub struct c_utmp {
pub ut_type: libc::c_short,
pub ut_pid: libc::pid_t,
pub ut_line: [libc::c_char; UT_LINESIZE],
pub ut_id: [libc::c_char; UT_IDSIZE],
pub ut_user: [libc::c_char; UT_NAMESIZE],
pub ut_host: [libc::c_char; UT_HOSTSIZE],
pub ut_exit: __exit_status,
#[cfg(target_pointer_width = "32")]
pub ut_session: libc::c_long,
#[cfg(target_pointer_width = "32")]
pub ut_tv: libc::timeval,
#[cfg(target_pointer_width = "64")]
pub ut_session: libc::int32_t,
#[cfg(target_pointer_width = "64")]
pub ut_tv: __timeval,
pub ut_addr_v6: [libc::int32_t; 4],
__glibc_reserved: [libc::c_char; 20],
}
}
#[cfg(target_os = "macos")]
mod utmpx {
use super::libc;
pub static DEFAULT_FILE: &'static str = "/var/run/utmpx";
pub const UT_LINESIZE: usize = 32;
pub const UT_NAMESIZE: usize = 256;
pub const UT_IDSIZE: usize = 4;
pub const UT_HOSTSIZE: usize = 256;
pub const EMPTY: libc::c_short = 0;
pub const RUN_LVL: libc::c_short = 1;
pub const BOOT_TIME: libc::c_short = 2;
pub const OLD_TIME: libc::c_short = 3;
pub const NEW_TIME: libc::c_short = 4;
pub const INIT_PROCESS: libc::c_short = 5;
pub const LOGIN_PROCESS: libc::c_short = 6;
pub const USER_PROCESS: libc::c_short = 7;
pub const DEAD_PROCESS: libc::c_short = 8;
pub const ACCOUNTING: libc::c_short = 9;
#[repr(C)]
pub struct c_utmp {
pub ut_user: [libc::c_char; UT_NAMESIZE],
pub ut_id: [libc::c_char; UT_IDSIZE],
pub ut_line: [libc::c_char; UT_LINESIZE],
pub ut_pid: libc::pid_t,
pub ut_type: libc::c_short,
pub ut_tv: libc::timeval,
pub ut_host: [libc::c_char; UT_HOSTSIZE],
pub __unused: [libc::uint32_t; 16],
}
}
#[cfg(target_os = "freebsd")]
mod utmpx {
use super::libc;
pub static DEFAULT_FILE: &'static str = "";
pub const UT_LINESIZE: usize = 16;
pub const UT_NAMESIZE: usize = 32;
pub const UT_IDSIZE: usize = 8;
pub const UT_HOSTSIZE: usize = 128;
pub const EMPTY: libc::c_short = 0;
pub const BOOT_TIME: libc::c_short = 1;
pub const OLD_TIME: libc::c_short = 2;
pub const NEW_TIME: libc::c_short = 3;
pub const USER_PROCESS: libc::c_short = 4;
pub const INIT_PROCESS: libc::c_short = 5;
pub const LOGIN_PROCESS: libc::c_short = 6;
pub const DEAD_PROCESS: libc::c_short = 7;
pub const SHUTDOWN_TIME: libc::c_short = 8;
#[repr(C)]
pub struct c_utmp {
pub ut_type: libc::c_short,
pub ut_tv: libc::timeval,
pub ut_id: [libc::c_char; UT_IDSIZE],
pub ut_pid: libc::pid_t,
pub ut_user: [libc::c_char; UT_NAMESIZE],
pub ut_line: [libc::c_char; UT_LINESIZE],
pub ut_host: [libc::c_char; UT_HOSTSIZE],
pub ut_spare: [libc::c_char; 64],
}
}