Add print_error() function that uses the conversation function to

print a variable number of error strings and use it in log_error().
This commit is contained in:
Todd C. Miller
2010-05-03 16:53:05 -04:00
parent 0eda64b235
commit 13966481c7
3 changed files with 69 additions and 37 deletions

View File

@@ -36,41 +36,44 @@ extern sudo_conv_t sudo_conv;
void
error(int eval, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
_warning(1, fmt, ap);
va_end(ap);
cleanup(0);
siglongjmp(error_jmp, eval);
va_list ap;
va_start(ap, fmt);
_warning(1, fmt, ap);
va_end(ap);
cleanup(0);
siglongjmp(error_jmp, eval);
}
void
errorx(int eval, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
_warning(0, fmt, ap);
va_end(ap);
cleanup(0);
siglongjmp(error_jmp, eval);
va_list ap;
va_start(ap, fmt);
_warning(0, fmt, ap);
va_end(ap);
cleanup(0);
siglongjmp(error_jmp, eval);
}
void
warning(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
_warning(1, fmt, ap);
va_end(ap);
va_list ap;
va_start(ap, fmt);
_warning(1, fmt, ap);
va_end(ap);
}
void
warningx(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
_warning(0, fmt, ap);
va_end(ap);
va_list ap;
va_start(ap, fmt);
_warning(0, fmt, ap);
va_end(ap);
}
static void
@@ -103,3 +106,28 @@ _warning(int use_errno, const char *fmt, va_list ap)
memset(&repl, 0, sizeof(repl));
sudo_conv(nmsgs, msg, repl);
}
void
print_error(int nmsgs, ...)
{
struct sudo_conv_message *msg;
struct sudo_conv_reply *repl;
va_list ap;
int i;
if (nmsgs <= 0)
return;
msg = emalloc2(nmsgs, sizeof(*msg));
repl = emalloc2(nmsgs, sizeof(*repl));
memset(repl, 0, nmsgs * sizeof(*repl));
va_start(ap, nmsgs);
for (i = 0; i < nmsgs; i++) {
msg[i].msg_type = SUDO_CONV_ERROR_MSG;
msg[i].msg = va_arg(ap, char *);
}
va_end(ap);
sudo_conv(nmsgs, msg, repl);
}