167761Smsmith/**
267761Smsmith * error.c
367761Smsmith *
467761Smsmith * error reporting routines
567761Smsmith * basicly wrappers around printf
667761Smsmith *
767761Smsmith * (c) 2005 NLnet Labs
867761Smsmith *
967761Smsmith * See the file LICENSE for the license
1067761Smsmith *
1167761Smsmith */
1267761Smsmith
1367761Smsmith#include "drill.h"
1467761Smsmith#include <ldns/ldns.h>
1567761Smsmith
1667761Smsmithstatic void
1767761Smsmithwarning_va_list(const char *fmt, va_list args)
1867761Smsmith{
1967761Smsmith        fprintf(stderr, "Warning: ");
2067761Smsmith        vfprintf(stderr, fmt, args);
2167761Smsmith        fprintf(stderr, "\n");
2267761Smsmith}
2367761Smsmith
2467761Smsmithvoid
2567761Smsmithwarning(const char *fmt, ...)
2667761Smsmith{
2767761Smsmith	va_list args;
2867761Smsmith	va_start(args, fmt);
2967761Smsmith	warning_va_list(fmt, args);
3067761Smsmith	va_end(args);
3167761Smsmith}
3267761Smsmith
3367761Smsmithstatic void
3467761Smsmitherror_va_list(const char *fmt, va_list args)
3567761Smsmith{
3667761Smsmith        fprintf(stderr, "Error: ");
3767761Smsmith        vfprintf(stderr, fmt, args);
3867761Smsmith        fprintf(stderr, "\n");
3969744Smsmith}
4069744Smsmith
4169744Smsmithvoid
4269744Smsmitherror(const char *fmt, ...)
4369744Smsmith{
4469744Smsmith	va_list args;
4567761Smsmith	va_start(args, fmt);
4667761Smsmith	error_va_list(fmt, args);
4767761Smsmith	va_end(args);
4867761Smsmith	exit(EXIT_FAILURE);
4967761Smsmith}
5067761Smsmith
5167761Smsmithstatic void
5267761Smsmithverbose_va_list(const char *fmt, va_list args)
5367761Smsmith{
5470271Stakawata        vfprintf(stdout, fmt, args);
5567761Smsmith        fprintf(stdout, "\n");
5667761Smsmith}
5767761Smsmith
5867761Smsmith/* print stuff */
5967761Smsmithvoid
6067761Smsmithmesg(const char *fmt, ...)
6167761Smsmith{
6267761Smsmith	va_list args;
6367761Smsmith	if (verbosity == -1) {
6467761Smsmith		return;
6567761Smsmith	}
6667761Smsmith	fprintf(stdout, ";; ");
6767761Smsmith	va_start(args, fmt);
6867761Smsmith	verbose_va_list(fmt, args);
6967761Smsmith	va_end(args);
7067761Smsmith}
7167761Smsmith
7267761Smsmith/* print stuff when in verbose mode (1) */
7367761Smsmithvoid
7467761Smsmithverbose(const char *fmt, ...)
7569744Smsmith{
7669744Smsmith	va_list args;
7769744Smsmith	if (verbosity < 1) {
7869744Smsmith		return;
7969744Smsmith	}
8067761Smsmith
8169744Smsmith	va_start(args, fmt);
8267761Smsmith	verbose_va_list(fmt, args);
8369744Smsmith	va_end(args);
8467761Smsmith}
8570271Stakawata
8670271Stakawata/* print stuff when in vverbose mode (2) */
8770271Stakawatavoid
8870271Stakawatavverbose(const char *fmt, ...)
8970271Stakawata{
9070271Stakawata	va_list args;
9170271Stakawata	if (verbosity < 2) {
9270271Stakawata		return;
9370271Stakawata	}
9470271Stakawata
9570271Stakawata	va_start(args, fmt);
9670271Stakawata	verbose_va_list(fmt, args);
9770271Stakawata	va_end(args);
9870271Stakawata}
9970271Stakawata
10070271Stakawatastatic void
10170271Stakawatadebug_va_list(const char *fmt, va_list args)
10270271Stakawata{
10370271Stakawata        vfprintf(stderr, fmt, args);
10470271Stakawata        fprintf(stderr, "\n");
10570271Stakawata}
10670271Stakawata
10767761Smsmithvoid
10870271Stakawatadebug(const char *fmt, ...)
10970271Stakawata{
11070271Stakawata	va_list args;
11170271Stakawata	fprintf(stderr, "[DEBUG] ");
11270271Stakawata	va_start(args, fmt);
11370271Stakawata	debug_va_list(fmt, args);
11470271Stakawata	va_end(args);
11570271Stakawata}
11670271Stakawata