Mercurial > crates > nonstick
comparison libpam-sys/src/constants.rs @ 108:e97534be35e3
Make some proc macros for doing cfg-like stuff for PAM impls.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Sat, 28 Jun 2025 00:34:45 -0400 |
parents | 49d9e2b5c189 |
children | bb465393621f |
comparison
equal
deleted
inserted
replaced
107:49c6633f6fd2 | 108:e97534be35e3 |
---|---|
1 //! All the constants. | 1 //! All the constants. |
2 #![allow(dead_code)] | 2 |
3 // We have to enable these otherwise we get lit up with warnings | |
4 // during conditional compilation. | |
5 #![allow(dead_code, unused_imports)] | |
3 | 6 |
4 /// Macro to make defining a bunch of constants way easier. | 7 /// Macro to make defining a bunch of constants way easier. |
5 macro_rules! define { | 8 macro_rules! define { |
6 ($(#[$attr:meta])* $($name:ident = $value:expr);+$(;)?) => { | 9 ($(#[$attr:meta])* $($name:ident = $value:expr);+$(;)?) => { |
7 define!( | 10 define!( |
8 @meta { $(#[$attr])* } | 11 @meta { $(#[$attr])* } |
9 $(pub const $name: u32 = $value;)+ | 12 $(pub const $name: u32 = $value;)+ |
10 ); | 13 ); |
11 }; | 14 }; |
12 (@meta $m:tt $($i:item)+) => { define!(@expand $($m $i)+); }; | 15 (@meta $m:tt $($i:item)+) => { define!(@expand $($m $i)+); }; |
13 (@expand $({ $(#[$m:meta])* } $i:item)+) => {$($(#[$m])* $i)+}; | 16 (@expand $({ $(#[$m:meta])* } $i:item)+) => {$($(#[$m])* $i)+}; |
14 } | 17 } |
15 | 18 |
16 #[cfg(feature = "use-system-headers")] | 19 #[cfg(feature = "use-system-headers")] |
17 pub use system_headers::*; | 20 pub use system_headers::*; |
18 | 21 |
19 #[cfg(not(feature = "use-system-headers"))] | 22 #[cfg(not(feature = "use-system-headers"))] |
53 | 56 |
54 #[cfg(pam_impl = "linux-pam")] | 57 #[cfg(pam_impl = "linux-pam")] |
55 pub use super::linux_pam::*; | 58 pub use super::linux_pam::*; |
56 | 59 |
57 #[cfg(not(pam_impl = "linux-pam"))] | 60 #[cfg(not(pam_impl = "linux-pam"))] |
58 pub use super::shared::*; | 61 pub use super::illumos_openpam::*; |
59 | 62 |
60 #[cfg(pam_impl = "illumos")] | 63 #[cfg(pam_impl = "illumos")] |
61 pub use super::illumos::*; | 64 pub use super::illumos::*; |
62 | 65 |
63 #[cfg(pam_impl = "openpam")] | 66 #[cfg(pam_impl = "openpam")] |
64 pub use super::openpam::*; | 67 pub use super::openpam::*; |
65 } | 68 } |
66 | 69 |
67 /// Constants extracted from PAM header files. | 70 /// Constants extracted from PAM header files. |
68 mod system_headers { | 71 mod system_headers { |
69 include!(concat!(env!("OUT_DIR"), "/constants.rs")); | 72 // include!(concat!(env!("OUT_DIR"), "/constants.rs")); |
70 } | 73 } |
71 | 74 |
72 /// Constants used by Linux-PAM. | 75 /// Constants used by Linux-PAM. |
73 mod linux_pam { | 76 mod linux_pam { |
74 define!( | 77 define!( |
112 PAM_SILENT = 0x8000; | 115 PAM_SILENT = 0x8000; |
113 PAM_DISALLOW_NULL_AUTHTOK = 0x0001; | 116 PAM_DISALLOW_NULL_AUTHTOK = 0x0001; |
114 PAM_ESTABLISH_CRED = 0x0002; | 117 PAM_ESTABLISH_CRED = 0x0002; |
115 PAM_DELETE_CRED = 0x0004; | 118 PAM_DELETE_CRED = 0x0004; |
116 PAM_REINITIALIZE_CRED = 0x0008; | 119 PAM_REINITIALIZE_CRED = 0x0008; |
120 PAM_REFRESH_CRED = 0x0010; | |
117 | 121 |
118 PAM_CHANGE_EXPIRED_AUTHTOK = 0x0020; | 122 PAM_CHANGE_EXPIRED_AUTHTOK = 0x0020; |
123 | |
124 PAM_PRELIM_CHECK = 0x4000; | |
125 PAM_UPDATE_AUTHTOK = 0x2000; | |
126 PAM_DATA_REPLACE = 0x20000000; | |
119 ); | 127 ); |
120 | 128 |
121 define!( | 129 define!( |
122 PAM_USER_PROMPT = 9; | 130 PAM_USER_PROMPT = 9; |
123 PAM_FAIL_DELAY = 10; | 131 PAM_FAIL_DELAY = 10; |
136 PAM_BINARY_PROMPT = 7; | 144 PAM_BINARY_PROMPT = 7; |
137 ); | 145 ); |
138 } | 146 } |
139 | 147 |
140 /// Constants shared between Illumos and OpenPAM. | 148 /// Constants shared between Illumos and OpenPAM. |
141 mod shared { | 149 mod illumos_openpam { |
142 define!( | 150 define!( |
143 /// An error code. | 151 /// An error code. |
144 PAM_OPEN_ERR = 1; | 152 PAM_OPEN_ERR = 1; |
145 PAM_SYMBOL_ERR = 2; | 153 PAM_SYMBOL_ERR = 2; |
146 PAM_SERVICE_ERR = 3; | 154 PAM_SERVICE_ERR = 3; |