Mercurial > crates > nonstick
comparison libpam-sys/README.md @ 161:e9354e655f38
Improve PAM detection docs.
| author | Paul Fisher <paul@pfish.zone> |
|---|---|
| date | Sun, 13 Jul 2025 16:06:51 -0400 |
| parents | 09dff285ff5e |
| children | 180237d0b498 |
comparison
equal
deleted
inserted
replaced
| 160:09dff285ff5e | 161:e9354e655f38 |
|---|---|
| 13 You can also explicitly specify the PAM implementation you want (if not detected correctly) by setting the `LIBPAMSYS_IMPL` environment variable **at build time**. | 13 You can also explicitly specify the PAM implementation you want (if not detected correctly) by setting the `LIBPAMSYS_IMPL` environment variable **at build time**. |
| 14 All build-time configuration is performed by the build script of the [`libpam-sys-consts` crate](https://crates.io/crates/libpam-sys-consts). | 14 All build-time configuration is performed by the build script of the [`libpam-sys-consts` crate](https://crates.io/crates/libpam-sys-consts). |
| 15 | 15 |
| 16 Normally, this crate exports all functionality available in the selected PAM library. | 16 Normally, this crate exports all functionality available in the selected PAM library. |
| 17 `XSso` exports only the subset of the [X/SSO specification][xsso] supported by both OpenPAM and Sun PAM. | 17 `XSso` exports only the subset of the [X/SSO specification][xsso] supported by both OpenPAM and Sun PAM. |
| 18 | |
| 19 ### Changing behavior based on PAM implementation | |
| 20 | |
| 21 Downstream crates can detect the current PAM implementation using custom `#[cfg]`s: | |
| 22 | |
| 23 ```rust | |
| 24 // Your package's build.rs: | |
| 25 use libpam_sys::pam_impl; | |
| 26 | |
| 27 fn main() { | |
| 28 pam_impl::enable_pam_impl_cfg(); | |
| 29 | |
| 30 // the rest of your build script... | |
| 31 } | |
| 32 ``` | |
| 33 | |
| 34 This will enable the use of `#[cfg]`s that look like this: | |
| 35 | |
| 36 ```rust | |
| 37 #[cfg(pam_impl = "Sun")] | |
| 38 fn some_func() { /* Sun-specific implementation */ } | |
| 39 | |
| 40 #[cfg(any(pam_impl = "LinuxPam", pam_impl = "OpenPam"))] | |
| 41 fn some_func() { /* Linux-PAM / OpenPAM implementation */ } | |
| 42 ``` | |
| 43 | |
| 44 Further documentation on this is available in `libpam-sys-consts`. | |
| 18 | 45 |
| 19 ## Testing | 46 ## Testing |
| 20 | 47 |
| 21 Tests are mostly run through `libpam-sys-test`, which lives in the crate's workspace in its repository (along with [nonstick]). | 48 Tests are mostly run through `libpam-sys-test`, which lives in the crate's workspace in its repository (along with [nonstick]). |
| 22 | 49 |
