comparison libpam-sys/src/constants.rs @ 134:6c1e1bdb4164

Use standard #[cfg] directives rather than custom proc macros. Instead of having to do a bunch of custom parsing and other logic that tools often choke on, this change introduces an easy way to depend upon custom #[cfg]s provided by the libpam-sys crate.
author Paul Fisher <paul@pfish.zone>
date Thu, 03 Jul 2025 11:03:36 -0400
parents 32b2a545ca3e
children
comparison
equal deleted inserted replaced
133:32b2a545ca3e 134:6c1e1bdb4164
1 //! All the constants. 1 //! All the constants.
2 //! 2 //!
3 //! These constants are tested on a per-platform basis by `libpam-sys-test`'s 3 //! These constants are tested on a per-platform basis by `libpam-sys-test`'s
4 //! `test_constants.rs`. 4 //! `test_constants.rs`.
5
6 use libpam_sys_impls::cfg_pam_impl;
7 5
8 /// Macro to make defining a bunch of constants way easier. 6 /// Macro to make defining a bunch of constants way easier.
9 macro_rules! define { 7 macro_rules! define {
10 ($(#[$attr:meta])* $($name:ident = $value:expr);+$(;)?) => { 8 ($(#[$attr:meta])* $($name:ident = $value:expr);+$(;)?) => {
11 define!( 9 define!(
68 PAM_MAX_NUM_MSG = 32; 66 PAM_MAX_NUM_MSG = 32;
69 PAM_MAX_MSG_SIZE = 512; 67 PAM_MAX_MSG_SIZE = 512;
70 PAM_MAX_RESP_SIZE = 512; 68 PAM_MAX_RESP_SIZE = 512;
71 ); 69 );
72 70
73 #[cfg_pam_impl("LinuxPam")] 71 #[cfg(pam_impl = "LinuxPam")]
74 pub use linux_pam::*; 72 pub use linux_pam::*;
75 #[cfg_pam_impl("LinuxPam")] 73 #[cfg(pam_impl = "LinuxPam")]
76 mod linux_pam { 74 mod linux_pam {
77 c_enum!( 75 c_enum!(
78 /// An error return code. 76 /// An error return code.
79 PAM_OPEN_ERR = 1, 77 PAM_OPEN_ERR = 1,
80 PAM_SYMBOL_ERR, 78 PAM_SYMBOL_ERR,
145 ); 143 );
146 144
147 pub const PAM_MODUTIL_NGROUPS: i32 = 64; 145 pub const PAM_MODUTIL_NGROUPS: i32 = 64;
148 } 146 }
149 147
150 #[cfg_pam_impl(any("OpenPam", "Sun", "XSso"))] 148 #[cfg(any(pam_impl = "OpenPam", pam_impl = "Sun", pam_impl = "XSso"))]
151 pub use xsso_shared::*; 149 pub use xsso_shared::*;
152 #[cfg_pam_impl(any("OpenPam", "Sun", "XSso"))] 150 #[cfg(any(pam_impl = "OpenPam", pam_impl = "Sun", pam_impl = "XSso"))]
153 mod xsso_shared { 151 mod xsso_shared {
154 c_enum!( 152 c_enum!(
155 /// An error return code. 153 /// An error return code.
156 PAM_OPEN_ERR = 1, 154 PAM_OPEN_ERR = 1,
157 PAM_SYMBOL_ERR, 155 PAM_SYMBOL_ERR,
204 PAM_UPDATE_AUTHTOK = 0b0010; 202 PAM_UPDATE_AUTHTOK = 0b0010;
205 PAM_CHANGE_EXPIRED_AUTHTOK = 0b0100; 203 PAM_CHANGE_EXPIRED_AUTHTOK = 0b0100;
206 ); 204 );
207 } 205 }
208 206
209 #[cfg_pam_impl("OpenPam")] 207 #[cfg(pam_impl = "OpenPam")]
210 pub use openpam::*; 208 pub use openpam::*;
211 #[cfg_pam_impl("OpenPam")] 209 #[cfg(pam_impl = "OpenPam")]
212 mod openpam { 210 mod openpam {
213 c_enum!( 211 c_enum!(
214 /// An error return code. 212 /// An error return code.
215 PAM_MODULE_UNKNOWN = 28, 213 PAM_MODULE_UNKNOWN = 28,
216 PAM_DOMAIN_UNKNOWN, 214 PAM_DOMAIN_UNKNOWN,
264 /// The number of PAM primitives. 262 /// The number of PAM primitives.
265 pub const PAM_NUM_PRIMITIVES: i32 = 6; 263 pub const PAM_NUM_PRIMITIVES: i32 = 6;
266 } 264 }
267 265
268 /// Constants exclusive to Illumos. 266 /// Constants exclusive to Illumos.
269 #[cfg_pam_impl("Sun")] 267 #[cfg(pam_impl = "Sun")]
270 pub use sun::*; 268 pub use sun::*;
271 #[cfg_pam_impl("Sun")] 269 #[cfg(pam_impl = "Sun")]
272 mod sun { 270 mod sun {
273 /// The total number of PAM error codes. 271 /// The total number of PAM error codes.
274 pub const PAM_TOTAL_ERRNUM: i32 = 28; 272 pub const PAM_TOTAL_ERRNUM: i32 = 28;
275 273
276 c_enum!( 274 c_enum!(