Listing 4. A Sample Implementation of converse() static int converse(pam_handle_t * pamh, int ctrl, int nargs ,struct pam_message **message ,struct pam_response **response) { int retval; struct pam_conv *conv; retval = pam_get_item(pamh, PAM_CONV, (const void **) &conv); if (retval == PAM_SUCCESS) { retval = conv->conv(nargs, (const struct pam_message **) message ,response, conv->appdata_ptr); printf("returned from application's conversation function"); if (retval != PAM_SUCCESS && on(UNIX_DEBUG, ctrl)) { printf("conversation failure\n",); } printf("ready to return from module conversation"); return retval; /* propagate error status */ }