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::*;