Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/libfido2/openbsd-compat/err.h
39534 views
1
/*
2
* Public domain
3
* err.h compatibility shim
4
*/
5
6
#ifndef _COMPAT_ERR_H
7
#define _COMPAT_ERR_H
8
9
#if !defined(HAVE_ERR_H)
10
11
#include <errno.h>
12
#include <stdarg.h>
13
#include <stdlib.h>
14
#include <stdio.h>
15
#include <string.h>
16
17
#if defined(_MSC_VER)
18
__declspec(noreturn)
19
#else
20
__attribute__((noreturn))
21
#endif
22
static inline void
23
err(int eval, const char *fmt, ...)
24
{
25
int sverrno = errno;
26
va_list ap;
27
28
va_start(ap, fmt);
29
if (fmt != NULL) {
30
vfprintf(stderr, fmt, ap);
31
fprintf(stderr, ": ");
32
}
33
va_end(ap);
34
fprintf(stderr, "%s\n", strerror(sverrno));
35
exit(eval);
36
}
37
38
#if defined(_MSC_VER)
39
__declspec(noreturn)
40
#else
41
__attribute__((noreturn))
42
#endif
43
static inline void
44
errx(int eval, const char *fmt, ...)
45
{
46
va_list ap;
47
48
va_start(ap, fmt);
49
if (fmt != NULL)
50
vfprintf(stderr, fmt, ap);
51
va_end(ap);
52
fprintf(stderr, "\n");
53
exit(eval);
54
}
55
56
static inline void
57
warn(const char *fmt, ...)
58
{
59
int sverrno = errno;
60
va_list ap;
61
62
va_start(ap, fmt);
63
if (fmt != NULL) {
64
vfprintf(stderr, fmt, ap);
65
fprintf(stderr, ": ");
66
}
67
va_end(ap);
68
fprintf(stderr, "%s\n", strerror(sverrno));
69
}
70
71
static inline void
72
warnx(const char *fmt, ...)
73
{
74
va_list ap;
75
76
va_start(ap, fmt);
77
if (fmt != NULL)
78
vfprintf(stderr, fmt, ap);
79
va_end(ap);
80
fprintf(stderr, "\n");
81
}
82
83
#endif /* !defined(HAVE_ERR_H) */
84
85
#endif /* _COMPAT_ERR_H */
86
87