Authen-PAM
view release on metacpan or search on metacpan
CODE:
if (item_type == PAM_CONV) {
data = get_perl_pam_data(pamh);
sv_setsv(item, data->conv_func);
RETVAL = PAM_SUCCESS;
}
#if defined(HAVE_PAM_FAIL_DELAY)
else if (item_type == PAM_FAIL_DELAY) {
data = get_perl_pam_data(pamh);
sv_setsv(item, data->delay_func);
RETVAL = PAM_SUCCESS;
}
#endif
else {
RETVAL = pam_get_item( pamh, item_type, (CONST_VOID **)&c);
sv_setpv(item, c);
}
OUTPUT:
item
RETVAL
const char *
pam_strerror(pamh, errnum)
pam_handle_t * pamh
int errnum
CODE:
#if defined(PAM_STRERROR_NEEDS_PAMH)
RETVAL = pam_strerror(pamh, errnum);
#else
RETVAL = pam_strerror(errnum);
#endif
OUTPUT:
RETVAL
#if defined(HAVE_PAM_GETENV)
int
pam_putenv(pamh, name_value)
pam_handle_t *pamh
const char *name_value
CODE:
RETVAL = pam_putenv(pamh, name_value);
OUTPUT:
RETVAL
const char *
pam_getenv(pamh, name)
pam_handle_t *pamh
const char *name
CODE:
RETVAL = pam_getenv(pamh, name);
OUTPUT:
RETVAL
void
_pam_getenvlist(pamh)
pam_handle_t *pamh
PREINIT:
char **res;
int i;
int c;
PPCODE:
res = pam_getenvlist(pamh);
c = 0;
while (res[c] != 0)
c++;
EXTEND(sp, c);
for (i = 0; i < c; i++)
PUSHs(sv_2mortal(newSVpv(res[i],0)));
#else
int
pam_putenv(pamh, name_value)
pam_handle_t *pamh
const char *name_value
CODE:
not_here("pam_putenv");
const char *
pam_getenv(pamh, name)
pam_handle_t *pamh
const char *name
CODE:
not_here("pam_getenv");
void
_pam_getenvlist(pamh)
pam_handle_t *pamh
CODE:
not_here("pam_getenvlist");
#endif
#if defined(HAVE_PAM_FAIL_DELAY)
int
pam_fail_delay(pamh, musec_delay)
pam_handle_t *pamh
unsigned int musec_delay
CODE:
RETVAL = pam_fail_delay(pamh, musec_delay);
OUTPUT:
RETVAL
#else
void
pam_fail_delay(pamh, musec_delay)
pam_handle_t * pamh
unsigned int musec_delay
CODE:
not_here("pam_fail_delay");
#endif
int
pam_authenticate(pamh, flags=0)
pam_handle_t *pamh
( run in 2.218 seconds using v1.01-cache-2.11-cpan-71847e10f99 )