+ xfree(reply);
+ return PAM_CONV_ERR;
+ case PAM_PROMPT_ECHO_OFF:
+ if (__pampasswd == NULL) {
+ xfree(reply);
+ return PAM_CONV_ERR;
+ }
+ reply[count].resp = xstrdup(__pampasswd);
+ reply[count].resp_retcode = PAM_SUCCESS;
+ break;
+ case PAM_ERROR_MSG:
+ case PAM_TEXT_INFO:
+ if (PAM_MSG_MEMBER(msg, count, msg) != NULL) {
+ message_cat(&__pam_msg,
+ PAM_MSG_MEMBER(msg, count, msg));
+ }
+ reply[count].resp = xstrdup("");
+ reply[count].resp_retcode = PAM_SUCCESS;
+ break;
+ default:
+ xfree(reply);
+ return PAM_CONV_ERR;
+ }
+ } else {
+ /*
+ * stdio is connected, so interact directly
+ */
+ switch(PAM_MSG_MEMBER(msg, count, msg_style)) {
+ case PAM_PROMPT_ECHO_ON:
+ fputs(PAM_MSG_MEMBER(msg, count, msg), stderr);