#include "internal.h"
#pragma mark Utilities
static void
_print_preamble(FILE *fp, const char *fmt, va_list ap)
{
fprintf(fp, "%s: ", getprogname());
vfprintf(fp, fmt, ap);
}
#pragma mark API
void
err_np(errno_t code, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
verr_np(code, fmt, ap);
va_end(ap);
}
void
errc_np(int eval, errno_t code, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
verrc_np(eval, code, fmt, ap);
va_end(ap);
}
void
warn_np(errno_t code, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
vwarn_np(code, fmt, ap);
va_end(ap);
}
void
verr_np(errno_t code, const char *fmt, va_list ap)
{
_print_preamble(stderr, fmt, ap);
fprintf(stderr, ": %s\n", strerror_np(code));
exit(sysexit_np(code));
}
void
verrc_np(int eval, errno_t code, const char *fmt, va_list ap)
{
_print_preamble(stderr, fmt, ap);
fprintf(stderr, ": %s\n", strerror_np(code));
exit(eval);
}
void
vwarn_np(errno_t code, const char *fmt, va_list ap)
{
_print_preamble(stderr, fmt, ap);
fprintf(stderr, ": %s\n", strerror_np(code));
}