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
//! Convenience aliases for complex types in PAM.
use ;
use ;
/// The type of [`pam_conv::conv`].
///
/// The exact format of `messages` varies between Linux-PAM and other
/// implementations. See `libpam_sys_helpers::PtrPtrVec` for details
/// (and a workaround).
///
/// ```no_run
/// use libpam_sys::aliases::ConversationCallback;
/// use libpam_sys::pam_conv;
/// fn convo() -> ConversationCallback {
/// // ...
/// # unimplemented!()
/// }
/// let conv = pam_conv {
/// conv: convo(),
/// appdata_ptr: std::ptr::null_mut(),
/// };
/// ```
pub type ConversationCallback = unsafe extern "C" fn ;
/// Alias for the callback to [`pam_set_data`].
///
/// ```no_run
/// # use std::ffi::CString;
/// use libpam_sys::aliases::CleanupCallback;
/// use libpam_sys::pam_set_data;
/// # use libpam_sys::pam_handle;
/// # let handle: *mut pam_handle = std::ptr::null_mut();
/// # let mut my_data = 100;
/// # let data_ptr = &mut my_data as *mut i32;
/// fn cleanup() -> CleanupCallback {
/// // ...
/// # unimplemented!()
/// }
/// let name = CString::new("name").unwrap();
/// unsafe {
/// pam_set_data(handle, name.as_ptr().cast_mut(), data_ptr.cast(), cleanup());
/// }
/// ```
pub type CleanupCallback =
unsafe extern "C" fn;