diff libpam-sys/src/constants.rs @ 118:39760dfc9b3b

Detect PAM library based only on system lib; rename minimal lib to XSso. Also formats and assorted other cleanup.
author Paul Fisher <paul@pfish.zone>
date Sun, 29 Jun 2025 20:13:03 -0400
parents 178310336596
children f469b8d9ad78
line wrap: on
line diff
--- a/libpam-sys/src/constants.rs	Sun Jun 29 18:48:14 2025 -0400
+++ b/libpam-sys/src/constants.rs	Sun Jun 29 20:13:03 2025 -0400
@@ -39,6 +39,7 @@
 
 // There are a few truly universal constants.
 // They are defined here directly.
+/// The successful return code.
 pub const PAM_SUCCESS: i32 = 0;
 
 c_enum!(
@@ -51,6 +52,7 @@
     PAM_AUTHTOK,
     PAM_OLDAUTHTOK,
     PAM_RUSER,
+    PAM_USER_PROMPT,
 );
 
 c_enum!(
@@ -73,7 +75,7 @@
 #[cfg_pam_impl("LinuxPam")]
 mod linux_pam {
     c_enum!(
-        /// An error code.
+        /// An error return code.
         PAM_OPEN_ERR = 1,
         PAM_SYMBOL_ERR,
         PAM_SERVICE_ERR,
@@ -107,8 +109,6 @@
         PAM_INCOMPLETE,
         _PAM_RETURN_VALUES,
     );
-    /// An error code.
-    pub const PAM_AUTHTOK_RECOVER_ERR: i32 = 21;
 
     define!(
         /// A flag value.
@@ -127,8 +127,7 @@
     );
 
     c_enum!(
-        PAM_USER_PROMPT = 9,
-        PAM_FAIL_DELAY,
+        PAM_FAIL_DELAY = 10,
         PAM_XDISPLAY,
         PAM_XAUTHDATA,
         PAM_AUTHTOK_TYPE,
@@ -145,12 +144,12 @@
     );
 }
 
-#[cfg_pam_impl(any("OpenPam", "OpenPamMinimal", "Sun"))]
-pub use openpam_sun::*;
-#[cfg_pam_impl(any("OpenPam", "OpenPamMinimal", "Sun"))]
-mod openpam_sun {
+#[cfg_pam_impl(any("OpenPam", "Sun", "XSso"))]
+pub use xsso_shared::*;
+#[cfg_pam_impl(any("OpenPam", "Sun", "XSso"))]
+mod xsso_shared {
     c_enum!(
-        /// An error code.
+        /// An error return code.
         PAM_OPEN_ERR = 1,
         PAM_SYMBOL_ERR,
         PAM_SERVICE_ERR,
@@ -179,17 +178,13 @@
         PAM_ABORT,
         PAM_TRY_AGAIN,
     );
-
-    define!(
-        /// An item type.
-        PAM_USER_PROMPT = 9;
-        PAM_REPOSITORY = 10;
-    );
+    // While `PAM_MODULE_UNKNOWN` and `PAM_DOMAIN_UNKNOWN` are in X/SSO,
+    // Sun doesn't use them so we're omitting them here.
 
     /// A general flag for PAM operations.
     pub const PAM_SILENT: i32 = 0x80000000u32 as i32;
 
-    /// The password must be non-null.
+    /// A flag for `pam_authenticate`.
     pub const PAM_DISALLOW_NULL_AUTHTOK: i32 = 0b1;
 
     define!(
@@ -201,7 +196,7 @@
     );
 
     define!(
-        /// A flag for `pam_chauthtok`.
+        /// A flag for `pam_sm_chauthtok`.
         PAM_PRELIM_CHECK = 0b0001;
         PAM_UPDATE_AUTHTOK = 0b0010;
         PAM_CHANGE_EXPIRED_AUTHTOK = 0b0100;
@@ -213,7 +208,7 @@
 #[cfg_pam_impl("OpenPam")]
 mod openpam {
     c_enum!(
-        /// An error code.
+        /// An error return code.
         PAM_MODULE_UNKNOWN = 28,
         PAM_DOMAIN_UNKNOWN,
         PAM_BAD_HANDLE,
@@ -221,12 +216,13 @@
         PAM_BAD_FEATURE,
         PAM_BAD_CONSTANT,
     );
-    /// The total number of PAM error codes.
+    /// The total number of PAM error codes (including success).
     pub const PAM_NUM_ERRORS: i32 = 34;
 
     c_enum!(
         /// An item type.
-        PAM_AUTHTOK_PROMPT = 11,
+        PAM_REPOSITORY = 10,
+        PAM_AUTHTOK_PROMPT,
         PAM_OLDAUTHTOK_PROMPT,
         PAM_HOST,
     );
@@ -262,10 +258,11 @@
     /// The total number of PAM error codes.
     pub const PAM_TOTAL_ERRNUM: i32 = 28;
 
-    define!(
+    c_enum!(
         /// An item type.
-        PAM_RESOURCE = 11;
-        PAM_AUSER = 12;
+        PAM_REPOSITORY = 10,
+        PAM_RESOURCE,
+        PAM_AUSER,
     );
 
     /// A flag for `pam_chauthtok`.