1/* See LICENSE file for copyright and license details. */
2#include <stdarg.h>
3#include <stdio.h>
4#include <stdlib.h>
5#include <string.h>
6
7#include "../util.h"
8
9char *argv0;
10
11void
12eprintf(const char *fmt, ...)
13{
14 va_list ap;
15
16 va_start(ap, fmt);
17 xvprintf(fmt, ap);
18 va_end(ap);
19
20 exit(1);
21}
22
23void
24enprintf(int status, const char *fmt, ...)
25{
26 va_list ap;
27
28 va_start(ap, fmt);
29 xvprintf(fmt, ap);
30 va_end(ap);
31
32 exit(status);
33}
34
35void
36weprintf(const char *fmt, ...)
37{
38 va_list ap;
39
40 va_start(ap, fmt);
41 xvprintf(fmt, ap);
42 va_end(ap);
43}
44
45void
46xvprintf(const char *fmt, va_list ap)
47{
48 if (argv0 && strncmp(fmt, "usage", strlen("usage")))
49 fprintf(stderr, "%s: ", argv0);
50
51 vfprintf(stderr, fmt, ap);
52
53 if (fmt[0] && fmt[strlen(fmt)-1] == ':') {
54 fputc(' ', stderr);
55 perror(NULL);
56 }
57}