systemconfiguration/
console_user.rs1use crate::{bridge, ffi};
2
3#[derive(Clone, Debug, Eq, PartialEq)]
4pub struct ConsoleUser {
6 name: String,
7 uid: u32,
8 gid: u32,
9}
10
11impl ConsoleUser {
12 pub fn current() -> Option<Self> {
14 let raw = unsafe { ffi::console_user::sc_console_user_copy_current() };
15 let raw = unsafe { bridge::OwnedHandle::from_raw(raw) }?;
16 let name = bridge::take_optional_string(unsafe {
17 ffi::console_user::sc_console_user_copy_name(raw.as_ptr())
18 })?;
19 let uid = unsafe { ffi::console_user::sc_console_user_get_uid(raw.as_ptr()) };
20 let gid = unsafe { ffi::console_user::sc_console_user_get_gid(raw.as_ptr()) };
21 Some(Self { name, uid, gid })
22 }
23
24 pub fn name(&self) -> &str {
26 &self.name
27 }
28
29 pub fn uid(&self) -> u32 {
31 self.uid
32 }
33
34 pub fn gid(&self) -> u32 {
36 self.gid
37 }
38}