Mercurial > crates > nonstick
comparison src/constants.rs @ 103:dfcd96a74ac4 default tip
write a truly prodigious amount of documentation
adds a bunch of links to the OpenPAM man pages and the XSSO spec
as well as just a bunch of prose and stuff.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Wed, 25 Jun 2025 00:59:24 -0400 |
parents | efe2f5f8b5b2 |
children |
comparison
equal
deleted
inserted
replaced
102:94eb11cb1798 | 103:dfcd96a74ac4 |
---|---|
4 // between Linux-PAM and OpenPAM header files. | 4 // between Linux-PAM and OpenPAM header files. |
5 #![allow(clippy::unnecessary_cast)] | 5 #![allow(clippy::unnecessary_cast)] |
6 | 6 |
7 #[cfg(feature = "link")] | 7 #[cfg(feature = "link")] |
8 use crate::libpam::pam_ffi; | 8 use crate::libpam::pam_ffi; |
9 use crate::{_linklist, _man7, _manbsd, _xsso}; | |
9 use bitflags::bitflags; | 10 use bitflags::bitflags; |
10 use libc::c_int; | 11 use libc::c_int; |
11 use num_enum::{IntoPrimitive, TryFromPrimitive}; | 12 use num_enum::{IntoPrimitive, TryFromPrimitive}; |
12 use std::error::Error; | 13 use std::error::Error; |
13 use std::ffi::c_uint; | 14 use std::ffi::c_uint; |
143 /// This flag is only used by `change_authtok`. | 144 /// This flag is only used by `change_authtok`. |
144 const UPDATE_AUTHTOK = pam_ffi::PAM_UPDATE_AUTHTOK as u32; | 145 const UPDATE_AUTHTOK = pam_ffi::PAM_UPDATE_AUTHTOK as u32; |
145 } | 146 } |
146 } | 147 } |
147 | 148 |
148 /// The Linux-PAM error return values. Success is an Ok [Result]. | 149 /// The PAM error return codes. |
149 /// | 150 /// |
150 /// Most abbreviations (except `AuthTok` and `Max`) are now full words. | 151 /// These are returned by most PAM functions if an error of some kind occurs. |
151 /// For more detailed information, see | 152 /// |
152 /// `/usr/include/security/_pam_types.h`. | 153 /// Instead of being an error code, success is represented by an Ok [`Result`]. |
154 /// | |
155 /// # References | |
156 /// | |
157 #[doc = _linklist!(pam: man7, manbsd)] | |
158 /// - [X/SSO error code specification][xsso] | |
159 /// | |
160 #[doc = _man7!(3 pam "RETURN_VALUES")] | |
161 #[doc = _manbsd!(3 pam "RETURN%20VALUES")] | |
162 #[doc = _xsso!("chap5.htm#tagcjh_06_02")] | |
153 #[allow(non_camel_case_types, dead_code)] | 163 #[allow(non_camel_case_types, dead_code)] |
154 #[derive(Copy, Clone, Debug, PartialEq, TryFromPrimitive, IntoPrimitive)] | 164 #[derive(Copy, Clone, Debug, PartialEq, TryFromPrimitive, IntoPrimitive)] |
155 #[non_exhaustive] // C might give us anything! | 165 #[non_exhaustive] // C might give us anything! |
156 #[repr(u32)] | 166 #[repr(u32)] |
157 pub enum ErrorCode { | 167 pub enum ErrorCode { |
226 fn fmt_internal(self, f: &mut Formatter<'_>) -> fmt::Result { | 236 fn fmt_internal(self, f: &mut Formatter<'_>) -> fmt::Result { |
227 write!(f, "PAM error: {self:?} ({n})", n = self as c_uint) | 237 write!(f, "PAM error: {self:?} ({n})", n = self as c_uint) |
228 } | 238 } |
229 } | 239 } |
230 | 240 |
231 /// Returned when text that should not have any `\0` bytes in it does. | |
232 /// Analogous to [`std::ffi::NulError`], but the data it was created from | |
233 /// is borrowed. | |
234 #[cfg(test)] | 241 #[cfg(test)] |
235 mod tests { | 242 mod tests { |
236 use super::*; | 243 use super::*; |
237 | 244 |
238 #[test] | 245 #[test] |