summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-11-25 19:10:24 +0000
committerbors <bors@rust-lang.org>2019-11-25 19:10:24 +0000
commit581ba358465c24a3954a835bcf446172abe45b6a (patch)
tree13cff2cf31809832c34c9f7a8dbd77de20b29078
parent7a12eedd522e09903745e41ca1f0bbef385a77bd (diff)
parent54283f9e984e0f8736c69e7df9b2bcbb387e8e10 (diff)
downloadrust-libc-581ba358465c24a3954a835bcf446172abe45b6a.tar.gz
Auto merge of #1603 - GrayJack:utmp_solaris, r=gnzlbg
Implement utmp for solarish targets I followed these references: https://github.com/illumos/illumos-gate/blob/4e0c5eff9af325c80994e9527b7cb8b3a1ffd1d4/usr/src/head/utmpx.h https://github.com/illumos/illumos-gate/blob/4e0c5eff9af325c80994e9527b7cb8b3a1ffd1d4/usr/src/head/utmp.h
-rw-r--r--src/unix/solarish/mod.rs27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/unix/solarish/mod.rs b/src/unix/solarish/mod.rs
index 0ad132e840..c8cca192d9 100644
--- a/src/unix/solarish/mod.rs
+++ b/src/unix/solarish/mod.rs
@@ -353,6 +353,16 @@ s! {
e_termination: ::c_short,
e_exit: ::c_short,
}
+
+ pub struct utmp {
+ pub ut_user: [::c_char; 8],
+ pub ut_id: [::c_char; 4],
+ pub ut_line: [::c_char; 12],
+ pub ut_pid: ::c_short,
+ pub ut_type: ::c_short,
+ pub ut_exit: exit_status,
+ pub ut_time: ::time_t,
+ }
}
s_no_extra_traits! {
@@ -1690,6 +1700,7 @@ pub const PORT_SOURCE_FILE: ::c_int = 7;
pub const PORT_SOURCE_POSTWAIT: ::c_int = 8;
pub const PORT_SOURCE_SIGNAL: ::c_int = 9;
+pub const NONROOT_USR: ::c_short = 2;
pub const _UTX_USERSIZE: usize = 32;
pub const _UTX_LINESIZE: usize = 32;
pub const _UTX_PADSIZE: usize = 5;
@@ -2404,10 +2415,18 @@ extern "C" {
pub fn pututxline(ut: *const utmpx) -> *mut utmpx;
pub fn setutxent();
pub fn endutxent();
-// TODO: uncomment after utmp implementation
-// pub fn getutmp(ux: *const utmpx, u: *mut utmp);
-// pub fn getutmpx(u: *const utmp, ux: *mut utmpx);
-// pub fn updwtmp(file: *const ::c_char, u: *mut utmp);
+
+ pub fn endutent();
+ pub fn getutent() -> *mut utmp;
+ pub fn getutid(u: *const utmp) -> *mut utmp;
+ pub fn getutline(u: *const utmp) -> *mut utmp;
+ pub fn pututline(u: *const utmp) -> *mut utmp;
+ pub fn setutent();
+ pub fn utmpname(file: *const ::c_char) -> ::c_int;
+
+ pub fn getutmp(ux: *const utmpx, u: *mut utmp);
+ pub fn getutmpx(u: *const utmp, ux: *mut utmpx);
+ pub fn updwtmp(file: *const ::c_char, u: *mut utmp);
}
mod compat;