comparison libpam-sys/src/lib.rs @ 174:9e4ce1631bd3

Dramatically expand documentation.
author Paul Fisher <paul@pfish.zone>
date Tue, 29 Jul 2025 18:58:27 -0400
parents a75a66cb4181
children 0730f5f2ee2a
comparison
equal deleted inserted replaced
173:46e8ce5cd5d1 174:9e4ce1631bd3
6 //! - The [`pam_impl`] submodule (and the associated [`pam_impl_name!`] macro), 6 //! - The [`pam_impl`] submodule (and the associated [`pam_impl_name!`] macro),
7 //! which can be used to detect the current PAM implementation. 7 //! which can be used to detect the current PAM implementation.
8 //! - The [`aliases`] submodule, which contains convenient aliases 8 //! - The [`aliases`] submodule, which contains convenient aliases
9 //! for callback types used in libpam, so you don't have to type 9 //! for callback types used in libpam, so you don't have to type
10 //! `unsafe extern "C" fn(this is so long)` all the time. 10 //! `unsafe extern "C" fn(this is so long)` all the time.
11 //!
12 #![doc = concat!("This documentation was built for the **", pam_impl_name!(), "** implementation.")] 11 #![doc = concat!("This documentation was built for the **", pam_impl_name!(), "** implementation.")]
13 //! 12 //!
14 //! You can override this **at build time** by setting the `LIBPAMSYS_IMPL` 13 //! You can override this **at build time** by setting the `LIBPAMSYS_IMPL`
15 //! environment variable to one of the values of the [`pam_impl::PamImpl`] enum. 14 //! environment variable to one of the values of the [`pam_impl::PamImpl`] enum.
16 //! For more information about configuration, see the documentation of 15 //! For more information about configuration, see the documentation of
409 /// # use std::ptr; 408 /// # use std::ptr;
410 /// use libpam_sys::*; 409 /// use libpam_sys::*;
411 /// # let service = CString::new("whatever").unwrap(); 410 /// # let service = CString::new("whatever").unwrap();
412 /// # let user = CString::new("whatever").unwrap(); 411 /// # let user = CString::new("whatever").unwrap();
413 /// let mut handle: *mut pam_handle = ptr::null_mut(); 412 /// let mut handle: *mut pam_handle = ptr::null_mut();
414 /// let mut conv = pam_conv{ 413 /// let mut conv = pam_conv {
415 /// conv: openpam_ttyconv, 414 /// conv: openpam_ttyconv,
416 /// appdata_ptr: ptr::null_mut(), 415 /// appdata_ptr: ptr::null_mut(),
417 /// }; 416 /// };
418 /// let result = unsafe { pam_start( 417 /// let result = unsafe { pam_start(service.as_ptr(), user.as_ptr(), &mut conv, &mut handle) };
419 /// service.as_ptr(), user.as_ptr(), &mut conv, &mut handle
420 /// ) };
421 /// ``` 418 /// ```
422 pub fn openpam_ttyconv( 419 pub fn openpam_ttyconv(
423 n: c_int, 420 n: c_int,
424 _msg: *const *const pam_message, 421 _msg: *const *const pam_message,
425 _resp: *mut *mut pam_response, 422 _resp: *mut *mut pam_response,
435 /// # use std::ptr; 432 /// # use std::ptr;
436 /// use libpam_sys::*; 433 /// use libpam_sys::*;
437 /// # let service = CString::new("whatever").unwrap(); 434 /// # let service = CString::new("whatever").unwrap();
438 /// # let user = CString::new("whatever").unwrap(); 435 /// # let user = CString::new("whatever").unwrap();
439 /// let mut handle: *mut pam_handle = ptr::null_mut(); 436 /// let mut handle: *mut pam_handle = ptr::null_mut();
440 /// let mut conv = pam_conv{ 437 /// let mut conv = pam_conv {
441 /// conv: openpam_nullconv, 438 /// conv: openpam_nullconv,
442 /// appdata_ptr: ptr::null_mut(), 439 /// appdata_ptr: ptr::null_mut(),
443 /// }; 440 /// };
444 /// let result = unsafe { pam_start( 441 /// let result = unsafe { pam_start(service.as_ptr(), user.as_ptr(), &mut conv, &mut handle) };
445 /// service.as_ptr(), user.as_ptr(), &mut conv, &mut handle
446 /// ) };
447 /// ``` 442 /// ```
448 pub fn openpam_nullconv( 443 pub fn openpam_nullconv(
449 n: c_int, 444 n: c_int,
450 _msg: *const *const pam_message, 445 _msg: *const *const pam_message,
451 _resp: *mut *mut pam_response, 446 _resp: *mut *mut pam_response,