endpoint_sec/event/
event_od_modify_password.rs1use std::ffi::OsStr;
4
5use endpoint_sec_sys::{es_event_od_modify_password_t, es_od_account_type_t};
6
7use crate::{AuditToken, Process};
8
9#[doc(alias = "es_event_od_modify_password_t")]
11pub struct EventOdModifyPassword<'a> {
12 pub(crate) raw: &'a es_event_od_modify_password_t,
14 pub(crate) version: u32,
16}
17
18impl<'a> EventOdModifyPassword<'a> {
19 #[inline(always)]
21 pub fn instigator(&self) -> Option<Process<'a>> {
22 let process = unsafe { self.raw.instigator()? };
24 Some(Process::new(process, self.version))
25 }
26
27 pub fn instigator_token(&self) -> AuditToken {
29 #[cfg(feature = "macos_15_0_0")]
30 if self.version >= 8 {
31 return AuditToken(self.raw.instigator_token);
32 }
33
34 self.instigator().unwrap().audit_token()
37 }
38
39 #[inline(always)]
41 pub fn error_code(&self) -> i32 {
42 self.raw.error_code
43 }
44
45 #[inline(always)]
47 pub fn account_type(&self) -> es_od_account_type_t {
48 self.raw.account_type
49 }
50
51 #[inline(always)]
53 pub fn account_name(&self) -> &'a OsStr {
54 unsafe { self.raw.account_name.as_os_str() }
56 }
57
58 #[inline(always)]
62 pub fn node_name(&self) -> &'a OsStr {
63 unsafe { self.raw.node_name.as_os_str() }
65 }
66
67 #[inline(always)]
70 pub fn db_path(&self) -> Option<&'a OsStr> {
71 if self.node_name() == OsStr::new("/Local/Default") {
72 Some(unsafe { self.raw.db_path.as_os_str() })
74 } else {
75 None
76 }
77 }
78}
79
80unsafe impl Send for EventOdModifyPassword<'_> {}
82unsafe impl Sync for EventOdModifyPassword<'_> {}
84
85impl_debug_eq_hash_with_functions!(EventOdModifyPassword<'a> with version; instigator, instigator_token, error_code, account_type, account_name, node_name, db_path);