Mercurial > crates > nonstick
comparison src/constants.rs @ 63:a7aa5ca0d00d
Move MessageStyle to conv, the only place it is used.
| author | Paul Fisher <paul@pfish.zone> |
|---|---|
| date | Wed, 21 May 2025 23:19:43 -0400 |
| parents | 05cc2c27334f |
| children | bbe84835d6db |
comparison
equal
deleted
inserted
replaced
| 62:d83623951070 | 63:a7aa5ca0d00d |
|---|---|
| 30 const REFRESH_CRED = 0x0010; | 30 const REFRESH_CRED = 0x0010; |
| 31 /// The password service should only update those passwords | 31 /// The password service should only update those passwords |
| 32 /// that have aged. If this flag is _not_ passed, | 32 /// that have aged. If this flag is _not_ passed, |
| 33 /// the password service should update all passwords. | 33 /// the password service should update all passwords. |
| 34 const CHANGE_EXPIRED_AUTHTOK = 0x0020; | 34 const CHANGE_EXPIRED_AUTHTOK = 0x0020; |
| 35 } | |
| 36 } | |
| 37 | |
| 38 /// Styles of message that are shown to the user. | |
| 39 #[derive(Debug, PartialEq, FromPrimitive)] | |
| 40 #[non_exhaustive] // non-exhaustive because C might give us back anything! | |
| 41 pub enum MessageStyle { | |
| 42 /// Requests information from the user; will be masked when typing. | |
| 43 PromptEchoOff = 1, | |
| 44 /// Requests information from the user; will not be masked. | |
| 45 PromptEchoOn = 2, | |
| 46 /// An error message. | |
| 47 ErrorMsg = 3, | |
| 48 /// An informational message. | |
| 49 TextInfo = 4, | |
| 50 /// Yes/No/Maybe conditionals. Linux-PAM specific. | |
| 51 RadioType = 5, | |
| 52 /// For server–client non-human interaction. | |
| 53 /// NOT part of the X/Open PAM specification. | |
| 54 BinaryPrompt = 7, | |
| 55 } | |
| 56 | |
| 57 impl TryFrom<c_int> for MessageStyle { | |
| 58 type Error = InvalidEnum<Self>; | |
| 59 fn try_from(value: c_int) -> std::result::Result<Self, Self::Error> { | |
| 60 Self::from_i32(value).ok_or(value.into()) | |
| 61 } | |
| 62 } | |
| 63 | |
| 64 impl From<MessageStyle> for c_int { | |
| 65 fn from(val: MessageStyle) -> Self { | |
| 66 val as Self | |
| 67 } | 35 } |
| 68 } | 36 } |
| 69 | 37 |
| 70 /// The Linux-PAM error return values. Success is an Ok [Result]. | 38 /// The Linux-PAM error return values. Success is an Ok [Result]. |
| 71 /// | 39 /// |
| 198 mod tests { | 166 mod tests { |
| 199 use super::*; | 167 use super::*; |
| 200 | 168 |
| 201 #[test] | 169 #[test] |
| 202 fn test_enums() { | 170 fn test_enums() { |
| 203 assert_eq!(Ok(MessageStyle::ErrorMsg), 3.try_into()); | 171 assert_eq!(Ok(ErrorCode::ServiceError), 3.try_into()); |
| 204 assert_eq!(Err(InvalidEnum::from(999)), ErrorCode::try_from(999)); | 172 assert_eq!(Err(InvalidEnum::from(999)), ErrorCode::try_from(999)); |
| 205 assert_eq!(Ok(()), ErrorCode::result_from(0)); | 173 assert_eq!(Ok(()), ErrorCode::result_from(0)); |
| 206 assert_eq!(Err(ErrorCode::Abort), ErrorCode::result_from(26)); | 174 assert_eq!(Err(ErrorCode::Abort), ErrorCode::result_from(26)); |
| 207 assert_eq!(Err(ErrorCode::SystemError), ErrorCode::result_from(423)); | 175 assert_eq!(Err(ErrorCode::SystemError), ErrorCode::result_from(423)); |
| 208 assert!(InvalidEnum::<MessageStyle>(33, PhantomData) | 176 assert!(InvalidEnum::<ErrorCode>(33, PhantomData) |
| 209 .to_string() | 177 .to_string() |
| 210 .starts_with("33 is not a valid ")); | 178 .starts_with("33 is not a valid ")); |
| 211 } | 179 } |
| 212 } | 180 } |
