Path: blob/main/contrib/libfido2/openbsd-compat/err.h
39534 views
/*1* Public domain2* err.h compatibility shim3*/45#ifndef _COMPAT_ERR_H6#define _COMPAT_ERR_H78#if !defined(HAVE_ERR_H)910#include <errno.h>11#include <stdarg.h>12#include <stdlib.h>13#include <stdio.h>14#include <string.h>1516#if defined(_MSC_VER)17__declspec(noreturn)18#else19__attribute__((noreturn))20#endif21static inline void22err(int eval, const char *fmt, ...)23{24int sverrno = errno;25va_list ap;2627va_start(ap, fmt);28if (fmt != NULL) {29vfprintf(stderr, fmt, ap);30fprintf(stderr, ": ");31}32va_end(ap);33fprintf(stderr, "%s\n", strerror(sverrno));34exit(eval);35}3637#if defined(_MSC_VER)38__declspec(noreturn)39#else40__attribute__((noreturn))41#endif42static inline void43errx(int eval, const char *fmt, ...)44{45va_list ap;4647va_start(ap, fmt);48if (fmt != NULL)49vfprintf(stderr, fmt, ap);50va_end(ap);51fprintf(stderr, "\n");52exit(eval);53}5455static inline void56warn(const char *fmt, ...)57{58int sverrno = errno;59va_list ap;6061va_start(ap, fmt);62if (fmt != NULL) {63vfprintf(stderr, fmt, ap);64fprintf(stderr, ": ");65}66va_end(ap);67fprintf(stderr, "%s\n", strerror(sverrno));68}6970static inline void71warnx(const char *fmt, ...)72{73va_list ap;7475va_start(ap, fmt);76if (fmt != NULL)77vfprintf(stderr, fmt, ap);78va_end(ap);79fprintf(stderr, "\n");80}8182#endif /* !defined(HAVE_ERR_H) */8384#endif /* _COMPAT_ERR_H */858687