comparison libpam-sys/src/aliases.rs @ 148:4b3a5095f68c

Move libpam-sys helpers into their own library. - Renames libpam-sys-helpers to libpam-sys-consts. - Moves libpam-sys-helpers::helpers into libpam-sys-helpers, which moves them completely out of libpam-sys's dependency chain. - Moves the aliases from libpam-sys into libpam-sys::aliases.
author Paul Fisher <paul@pfish.zone>
date Mon, 07 Jul 2025 12:11:43 -0400
parents
children
comparison
equal deleted inserted replaced
147:4d7333337569 148:4b3a5095f68c
1 //! Convenience aliases for complex types in PAM.
2
3 use super::{pam_conv, pam_handle, pam_message, pam_response, pam_set_data};
4 use std::ffi::{c_int, c_void};
5
6 /// The type of [`pam_conv::conv`].
7 ///
8 /// The exact format of `messages` varies between Linux-PAM and other
9 /// implementations. See `libpam_sys_helpers::PtrPtrVec` for details
10 /// (and a workaround).
11 ///
12 /// ```no_run
13 /// use libpam_sys::pam_conv;
14 /// use libpam_sys::aliases::ConversationCallback;
15 /// fn convo() -> ConversationCallback {
16 /// // ...
17 /// # unimplemented!()
18 /// }
19 /// let conv = pam_conv{conv: convo(), appdata_ptr: std::ptr::null_mut()};
20 /// ```
21 pub type ConversationCallback = unsafe extern "C" fn(
22 num_msg: c_int,
23 msg: *const *const pam_message,
24 resp: *mut *mut pam_response,
25 appdata: *mut c_void,
26 ) -> c_int;
27
28 /// Alias for the callback to [`pam_set_data`].
29 ///
30 /// ```no_run
31 /// # use std::ffi::CString;
32 /// use libpam_sys::pam_set_data;
33 /// use libpam_sys::aliases::CleanupCallback;
34 /// # use libpam_sys::pam_handle;
35 /// # let handle: *mut pam_handle = std::ptr::null_mut();
36 /// # let mut my_data = 100;
37 /// # let data_ptr = &mut my_data as *mut i32;
38 /// fn cleanup() -> CleanupCallback {
39 /// // ...
40 /// # unimplemented!()
41 /// }
42 /// let name = CString::new("name").unwrap();
43 /// unsafe {
44 /// pam_set_data(handle, name.as_ptr().cast_mut(), data_ptr.cast(), cleanup());
45 /// }
46 /// ```
47 pub type CleanupCallback =
48 unsafe extern "C" fn(pamh: *mut pam_handle, data: *mut c_void, pam_end_status: c_int);