Mercurial > crates > nonstick
diff src/constants.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 | a632a8874131 |
children |
line wrap: on
line diff
--- a/src/constants.rs Thu Jul 03 11:14:49 2025 -0400 +++ b/src/constants.rs Thu Jul 03 14:28:04 2025 -0400 @@ -18,8 +18,8 @@ /// **The values of these constants are deliberately selected _not_ to match /// any PAM implementations. Applications should always use the symbolic value /// and not a magic number.** -mod pam_ffi { - pub use libpam_sys::*; +mod pam_constants { + pub use libpam_sys_helpers::constants::*; macro_rules! define { ($(#[$attr:meta])* $($name:ident = $value:expr;)+) => { @@ -34,24 +34,21 @@ define!( /// A fictitious constant for testing purposes. - #[cfg(not(feature = "link"))] - #[cfg_pam_impl(not("OpenPam"))] + #[cfg(not(pam_impl = "OpenPam"))] PAM_BAD_CONSTANT = 513; PAM_BAD_FEATURE = 514; ); define!( /// A fictitious constant for testing purposes. - #[cfg(not(feature = "link"))] - #[cfg_pam_impl(not(any("LinuxPam", "OpenPam")))] + #[cfg(not(any(pam_impl = "LinuxPam", pam_impl = "OpenPam")))] PAM_BAD_ITEM = 515; PAM_MODULE_UNKNOWN = 516; ); define!( /// A fictitious constant for testing purposes. - #[cfg(not(feature = "link"))] - #[cfg_pam_impl(not("LinuxPam"))] + #[cfg(not(pam_impl = "LinuxPam"))] PAM_CONV_AGAIN = 517; PAM_INCOMPLETE = 518; ); @@ -66,24 +63,24 @@ #[repr(transparent)] pub struct Flags: c_int { /// The module should not generate any messages. - const SILENT = libpam_sys::PAM_SILENT; + const SILENT = pam_constants::PAM_SILENT; /// The module should return [ErrorCode::AuthError] /// if the user has an empty authentication token /// rather than immediately accepting them. - const DISALLOW_NULL_AUTHTOK = libpam_sys::PAM_DISALLOW_NULL_AUTHTOK; + const DISALLOW_NULL_AUTHTOK = pam_constants::PAM_DISALLOW_NULL_AUTHTOK; // Flag used for `set_credentials`. /// Set user credentials for an authentication service. - const ESTABLISH_CREDENTIALS = libpam_sys::PAM_ESTABLISH_CRED; + const ESTABLISH_CREDENTIALS = pam_constants::PAM_ESTABLISH_CRED; /// Delete user credentials associated with /// an authentication service. - const DELETE_CREDENTIALS = libpam_sys::PAM_DELETE_CRED; + const DELETE_CREDENTIALS = pam_constants::PAM_DELETE_CRED; /// Reinitialize user credentials. - const REINITIALIZE_CREDENTIALS = libpam_sys::PAM_REINITIALIZE_CRED; + const REINITIALIZE_CREDENTIALS = pam_constants::PAM_REINITIALIZE_CRED; /// Extend the lifetime of user credentials. - const REFRESH_CREDENTIALS = libpam_sys::PAM_REFRESH_CRED; + const REFRESH_CREDENTIALS = pam_constants::PAM_REFRESH_CRED; // Flags used for password changing. @@ -92,7 +89,7 @@ /// the password service should update all passwords. /// /// This flag is only used by `change_authtok`. - const CHANGE_EXPIRED_AUTHTOK = libpam_sys::PAM_CHANGE_EXPIRED_AUTHTOK; + const CHANGE_EXPIRED_AUTHTOK = pam_constants::PAM_CHANGE_EXPIRED_AUTHTOK; /// This is a preliminary check for password changing. /// The password should not be changed. /// @@ -100,7 +97,7 @@ /// Applications may not use this flag. /// /// This flag is only used by `change_authtok`. - const PRELIMINARY_CHECK = libpam_sys::PAM_PRELIM_CHECK; + const PRELIMINARY_CHECK = pam_constants::PAM_PRELIM_CHECK; /// The password should actuallyPR be updated. /// This and [Self::PRELIMINARY_CHECK] are mutually exclusive. /// @@ -108,7 +105,7 @@ /// Applications may not use this flag. /// /// This flag is only used by `change_authtok`. - const UPDATE_AUTHTOK = libpam_sys::PAM_UPDATE_AUTHTOK; + const UPDATE_AUTHTOK = pam_constants::PAM_UPDATE_AUTHTOK; } } @@ -131,41 +128,41 @@ #[non_exhaustive] // C might give us anything! #[repr(i32)] pub enum ErrorCode { - OpenError = pam_ffi::PAM_OPEN_ERR, - SymbolError = pam_ffi::PAM_SYMBOL_ERR, - ServiceError = pam_ffi::PAM_SERVICE_ERR, - SystemError = pam_ffi::PAM_SYSTEM_ERR, - BufferError = pam_ffi::PAM_BUF_ERR, - PermissionDenied = pam_ffi::PAM_PERM_DENIED, - AuthenticationError = pam_ffi::PAM_AUTH_ERR, - CredentialsInsufficient = pam_ffi::PAM_CRED_INSUFFICIENT, - AuthInfoUnavailable = pam_ffi::PAM_AUTHINFO_UNAVAIL, - UserUnknown = pam_ffi::PAM_USER_UNKNOWN, - MaxTries = pam_ffi::PAM_MAXTRIES, - NewAuthTokRequired = pam_ffi::PAM_NEW_AUTHTOK_REQD, - AccountExpired = pam_ffi::PAM_ACCT_EXPIRED, - SessionError = pam_ffi::PAM_SESSION_ERR, - CredentialsUnavailable = pam_ffi::PAM_CRED_UNAVAIL, - CredentialsExpired = pam_ffi::PAM_CRED_EXPIRED, - CredentialsError = pam_ffi::PAM_CRED_ERR, - NoModuleData = pam_ffi::PAM_NO_MODULE_DATA, - ConversationError = pam_ffi::PAM_CONV_ERR, - AuthTokError = pam_ffi::PAM_AUTHTOK_ERR, - AuthTokRecoveryError = pam_ffi::PAM_AUTHTOK_RECOVERY_ERR, - AuthTokLockBusy = pam_ffi::PAM_AUTHTOK_LOCK_BUSY, - AuthTokDisableAging = pam_ffi::PAM_AUTHTOK_DISABLE_AGING, - TryAgain = pam_ffi::PAM_TRY_AGAIN, - Ignore = pam_ffi::PAM_IGNORE, - Abort = pam_ffi::PAM_ABORT, - AuthTokExpired = pam_ffi::PAM_AUTHTOK_EXPIRED, + OpenError = pam_constants::PAM_OPEN_ERR, + SymbolError = pam_constants::PAM_SYMBOL_ERR, + ServiceError = pam_constants::PAM_SERVICE_ERR, + SystemError = pam_constants::PAM_SYSTEM_ERR, + BufferError = pam_constants::PAM_BUF_ERR, + PermissionDenied = pam_constants::PAM_PERM_DENIED, + AuthenticationError = pam_constants::PAM_AUTH_ERR, + CredentialsInsufficient = pam_constants::PAM_CRED_INSUFFICIENT, + AuthInfoUnavailable = pam_constants::PAM_AUTHINFO_UNAVAIL, + UserUnknown = pam_constants::PAM_USER_UNKNOWN, + MaxTries = pam_constants::PAM_MAXTRIES, + NewAuthTokRequired = pam_constants::PAM_NEW_AUTHTOK_REQD, + AccountExpired = pam_constants::PAM_ACCT_EXPIRED, + SessionError = pam_constants::PAM_SESSION_ERR, + CredentialsUnavailable = pam_constants::PAM_CRED_UNAVAIL, + CredentialsExpired = pam_constants::PAM_CRED_EXPIRED, + CredentialsError = pam_constants::PAM_CRED_ERR, + NoModuleData = pam_constants::PAM_NO_MODULE_DATA, + ConversationError = pam_constants::PAM_CONV_ERR, + AuthTokError = pam_constants::PAM_AUTHTOK_ERR, + AuthTokRecoveryError = pam_constants::PAM_AUTHTOK_RECOVERY_ERR, + AuthTokLockBusy = pam_constants::PAM_AUTHTOK_LOCK_BUSY, + AuthTokDisableAging = pam_constants::PAM_AUTHTOK_DISABLE_AGING, + TryAgain = pam_constants::PAM_TRY_AGAIN, + Ignore = pam_constants::PAM_IGNORE, + Abort = pam_constants::PAM_ABORT, + AuthTokExpired = pam_constants::PAM_AUTHTOK_EXPIRED, #[cfg(feature = "basic-ext")] - ModuleUnknown = pam_ffi::PAM_MODULE_UNKNOWN, + ModuleUnknown = pam_constants::PAM_MODULE_UNKNOWN, #[cfg(feature = "basic-ext")] - BadItem = pam_ffi::PAM_BAD_ITEM, + BadItem = pam_constants::PAM_BAD_ITEM, #[cfg(feature = "linux-pam-ext")] - ConversationAgain = pam_ffi::PAM_CONV_AGAIN, + ConversationAgain = pam_constants::PAM_CONV_AGAIN, #[cfg(feature = "linux-pam-ext")] - Incomplete = pam_ffi::PAM_INCOMPLETE, + Incomplete = pam_constants::PAM_INCOMPLETE, } /// A PAM-specific Result type with an [ErrorCode] error. @@ -235,12 +232,12 @@ fn test_enums() { assert_eq!(Ok(()), ErrorCode::result_from(0)); assert_eq!( - pam_ffi::PAM_SESSION_ERR as i32, + pam_constants::PAM_SESSION_ERR as i32, ErrorCode::result_to_c::<()>(Err(ErrorCode::SessionError)) ); assert_eq!( Err(ErrorCode::Abort), - ErrorCode::result_from(pam_ffi::PAM_ABORT as i32) + ErrorCode::result_from(pam_constants::PAM_ABORT as i32) ); assert_eq!(Err(ErrorCode::SystemError), ErrorCode::result_from(423)); }