Mercurial > crates > nonstick
diff libpam-sys/libpam-sys-helpers/src/lib.rs @ 136:efbc235f01d3
Separate libpam-sys-helpers from libpam-sys.
This separates the parts of libpam-sys that don't need linking against libpam
from the parts that do need to link against libpam.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Thu, 03 Jul 2025 14:28:04 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpam-sys/libpam-sys-helpers/src/lib.rs Thu Jul 03 14:28:04 2025 -0400 @@ -0,0 +1,51 @@ +#![doc = include_str!("../README.md")] +//! +//! ## Current implementation +//! +//! This documentation was built based on the +#![doc = concat!("**", env!("LIBPAMSYS_IMPL"), "** implementation.")] + +pub mod constants; +pub mod memory; + +/// Information about the PAM implementation you're using right now. +/// +/// This module contains constants and values that can be used at build-script, +/// compile, and run time to determine what PAM implementation you're using. +/// +/// ## Always available +/// +/// [`PamImpl::CURRENT`] will tell you what version of PAM you're using. +/// It can be imported in any Rust code, from build scripts to runtime. +/// +/// ## Compile time +/// +/// Use [`enable_pam_impl_cfg`] in your `build.rs` to generate custom `#[cfg]`s +/// for conditional compilation based on PAM implementation. +/// +/// This will set the current `pam_impl` as well as registering all known +/// PAM implementations with `rustc-check-cfg` to get cfg-checking. +/// +/// The names that appear in the `cfg` variables are the same as the values +/// in the [`PamImpl`] enum. +/// +/// ``` +/// #[cfg(pam_impl = "OpenPam")] +/// fn openpam_specific_func(handle: *const libpam_sys::pam_handle) { +/// let environ = libpam_sys::pam_getenvlist(handle); +/// // ... +/// libpam_sys::openpam_free_envlist() +/// } +/// +/// // This will give you a warning since "UnknownImpl" is not in the cfg. +/// #[cfg(not(pam_impl = "UnknownImpl"))] +/// fn do_something() { +/// // ... +/// } +/// ``` +/// +/// The [`pam_impl_name!`] macro will expand to this same value, currently +#[doc = concat!("`", env!("LIBPAMSYS_IMPL"), "`.")] +pub mod pam_impl; +#[doc(inline)] +pub use pam_impl::*;