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 */
}
