Mercurial > crates > nonstick
diff libpam-sys/libpam-sys-impls/src/lib.rs @ 176:0730f5f2ee2a
Turn `libpam-sys-consts` back into `libpam-sys-impls`.
This moves the constants into `libpam-sys` and makes `libpam-sys-impls`
responsible solely for detecting the current PAM implementation.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Wed, 30 Jul 2025 17:53:31 -0400 |
parents | libpam-sys/libpam-sys-consts/src/lib.rs@e9354e655f38 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpam-sys/libpam-sys-impls/src/lib.rs Wed Jul 30 17:53:31 2025 -0400 @@ -0,0 +1,53 @@ +//! 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. +//! +//! ``` +//! // Your package's build.rs: +//! +//! fn main() { +//! // Also available at libpam_sys::pam_impl::enable_pam_impl_cfg(). +//! libpam_sys_impls::enable_pam_impl_cfg(); +//! // whatever else you do in your build script. +//! } +//! ``` +//! +//! 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. +//! +//! ```ignore +//! #[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"), "`.")] + +mod pam_impl; + +#[doc(inline)] +pub use pam_impl::*;