use libc::{c_char, c_int, c_void};
use types::*;
extern "C" {
pub fn pam_start(service_name: *const c_char,
user: *const c_char,
pam_conversation: *const PamConversation,
pamh: *mut *const PamHandle)
-> c_int;
pub fn pam_end(pamh: *mut PamHandle, pam_status: c_int) -> c_int;
pub fn pam_authenticate(pamh: *mut PamHandle, flags: c_int) -> c_int;
pub fn pam_setcred(pamh: *mut PamHandle, flags: c_int) -> c_int;
pub fn pam_acct_mgmt(pamh: *mut PamHandle, flags: c_int) -> c_int;
pub fn pam_open_session(pamh: *mut PamHandle, flags: c_int) -> c_int;
pub fn pam_close_session(pamh: *mut PamHandle, flags: c_int) -> c_int;
pub fn pam_chauthtok(pamh: *mut PamHandle, flags: c_int) -> c_int;
pub fn pam_set_item(pamh: *mut PamHandle, item_type: c_int, item: *const c_void) -> c_int;
pub fn pam_get_item(pamh: *const PamHandle,
item_type: c_int,
item: *mut *const c_void)
-> c_int;
pub fn pam_strerror(pamh: *mut PamHandle, errnum: c_int) -> *const c_char;
pub fn pam_putenv(pamh: *mut PamHandle, name_value: *const c_char) -> c_int;
pub fn pam_getenv(pamh: *mut PamHandle, name: *const c_char) -> *const c_char;
pub fn pam_getenvlist(pamh: *mut PamHandle) -> *const *const c_char;
#[cfg(target_os = "linux")]
pub fn pam_misc_paste_env(pamh: *mut PamHandle,
user_env: *const *const c_char)
-> c_int;
#[cfg(target_os = "linux")]
pub fn pam_misc_drop_env(env: *mut *mut c_char) -> c_int;
#[cfg(target_os = "linux")]
pub fn pam_misc_setenv(pamh: *mut PamHandle,
name: *const c_char,
value: *const c_char,
readonly: c_int)
-> c_int;
pub fn pam_set_data(pamh: *mut PamHandle,
module_data_name: *const c_char,
data: *mut c_void,
cleanup: Option<extern "C" fn(*mut PamHandle, *mut c_void, c_int)>)
-> c_int;
pub fn pam_get_data(pamh: *const PamHandle,
module_data_name: *const c_char,
data: *mut *const c_void)
-> c_int;
pub fn pam_get_user(pamh: *const PamHandle,
user: *mut *const c_char,
prompt: *const c_char)
-> c_int;
}