Bsd like pam environment variable setting
#include <security/pam_misc.h>
int pam_misc_setenv(pam_handle_t *pamh, const char *name, const char *value, intreadonly);
This function performs a task equivalent to pam_putenv(3), its syntax is, however, more like the BSD style function; setenv(). The name and value are concatenated with an '=' to form a name=value and passed to pam_putenv(). If, however, the PAM variable is already set, the replacement will only be applied if the last argument, readonly, is zero.
pam_putenv(3), pam(7)
The pam_misc_setenv function is part of the libpam_misc Library and not defined in any standard.