2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #include <afsconfig.h>
11 #include <afs/param.h>
15 #include <security/pam_appl.h>
17 #include "afs_pam_msg.h"
18 #include "afs_message.h"
22 pam_afs_printf(PAM_CONST
struct pam_conv
*pam_convp
, int error
, int fmt_msgid
, ...)
25 char buf
[PAM_MAX_MSG_SIZE
];
28 struct pam_message mesg
;
29 PAM_CONST
struct pam_message
*mesgp
= &mesg
;
30 struct pam_response
*resp
= NULL
;
33 if (pam_convp
== NULL
|| pam_convp
->conv
== NULL
)
36 fmt_msg
= pam_afs_message(fmt_msgid
, &freeit
);
37 va_start(args
, fmt_msgid
);
38 vsprintf(buf
, fmt_msg
, args
);
43 mesg
.msg_style
= error
? PAM_ERROR_MSG
: PAM_TEXT_INFO
;
45 errcode
= (*(pam_convp
->conv
)) (1, &mesgp
, &resp
, pam_convp
->appdata_ptr
);
56 pam_afs_prompt(PAM_CONST
struct pam_conv
*pam_convp
, char **response
, int echo
,
60 char buf
[PAM_MAX_MSG_SIZE
];
63 struct pam_message mesg
;
64 PAM_CONST
struct pam_message
*mesgp
= &mesg
;
65 struct pam_response
*resp
= NULL
;
68 if (pam_convp
== NULL
|| pam_convp
->conv
== NULL
|| response
== NULL
)
73 fmt_msg
= pam_afs_message(fmt_msgid
, &freeit
);
74 va_start(args
, fmt_msgid
);
75 vsprintf(buf
, fmt_msg
, args
);
80 mesg
.msg_style
= echo
? PAM_PROMPT_ECHO_ON
: PAM_PROMPT_ECHO_OFF
;
83 errcode
= (*(pam_convp
->conv
)) (1, &mesgp
, &resp
, pam_convp
->appdata_ptr
);
85 *response
= resp
->resp
;
87 free(resp
); /* but not resp->resp */