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