1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// Generated by gir (https://github.com/gtk-rs/gir @ 0e476ab5c1de)
// from /usr/share/gir-1.0 (@ ???)
// DO NOT EDIT
use crate::Identity;
use glib::{
prelude::*,
signal::{connect_raw, SignalHandlerId},
translate::*,
};
use std::boxed::Box as Box_;
glib::wrapper! {
/// An object representing a user identity on a UNIX system.
///
/// ## Properties
///
///
/// #### `uid`
/// The UNIX user id.
///
/// Readable | Writeable | Construct
///
/// # Implements
///
/// [`trait@glib::ObjectExt`], [`IdentityExt`][trait@crate::prelude::IdentityExt]
#[doc(alias = "PolkitUnixUser")]
pub struct UnixUser(Object<ffi::PolkitUnixUser, ffi::PolkitUnixUserClass>) @implements Identity;
match fn {
type_ => || ffi::polkit_unix_user_get_type(),
}
}
impl UnixUser {
/// Get the user's name.
///
/// # Returns
///
/// User name string or [`None`] if user uid not found.
#[doc(alias = "polkit_unix_user_get_name")]
#[doc(alias = "get_name")]
pub fn name(&self) -> Option<glib::GString> {
unsafe { from_glib_none(ffi::polkit_unix_user_get_name(self.to_glib_none().0)) }
}
/// Gets the UNIX user id for `self`.
///
/// # Returns
///
/// A UNIX user id.
#[doc(alias = "polkit_unix_user_get_uid")]
#[doc(alias = "get_uid")]
pub fn uid(&self) -> i32 {
unsafe { ffi::polkit_unix_user_get_uid(self.to_glib_none().0) }
}
/// Sets `uid` for `self`.
/// ## `uid`
/// A UNIX user id.
#[doc(alias = "polkit_unix_user_set_uid")]
pub fn set_uid(&self, uid: i32) {
unsafe {
ffi::polkit_unix_user_set_uid(self.to_glib_none().0, uid);
}
}
/// Creates a new [`UnixUser`][crate::UnixUser] object for `uid`.
/// ## `uid`
/// A UNIX user id.
///
/// # Returns
///
/// A [`UnixUser`][crate::UnixUser] object. Free with `g_object_unref()`.
#[doc(alias = "polkit_unix_user_new")]
pub fn new(uid: i32) -> Identity {
unsafe { from_glib_full(ffi::polkit_unix_user_new(uid)) }
}
/// Creates a new [`UnixUser`][crate::UnixUser] object for a user with the user name
/// `name`.
/// ## `name`
/// A UNIX user name.
///
/// # Returns
///
/// A [`UnixUser`][crate::UnixUser] object or [`None`] if `error` is set.
#[doc(alias = "polkit_unix_user_new_for_name")]
pub fn new_for_name(name: &str) -> Result<Option<Identity>, glib::Error> {
unsafe {
let mut error = std::ptr::null_mut();
let ret = ffi::polkit_unix_user_new_for_name(name.to_glib_none().0, &mut error);
if error.is_null() {
Ok(from_glib_full(ret))
} else {
Err(from_glib_full(error))
}
}
}
#[doc(alias = "uid")]
pub fn connect_uid_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_uid_trampoline<F: Fn(&UnixUser) + 'static>(
this: *mut ffi::PolkitUnixUser,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::uid\0".as_ptr() as *const _,
Some(std::mem::transmute::<_, unsafe extern "C" fn()>(
notify_uid_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
}