diff options
Diffstat (limited to 'libgcompat')
-rw-r--r-- | libgcompat/internal.c | 17 | ||||
-rw-r--r-- | libgcompat/internal.h | 14 |
2 files changed, 31 insertions, 0 deletions
diff --git a/libgcompat/internal.c b/libgcompat/internal.c new file mode 100644 index 0000000..441b3cc --- /dev/null +++ b/libgcompat/internal.c @@ -0,0 +1,17 @@ +#include <stdio.h> +#include <stdarg.h> +#include <stdlib.h> + + +void GCOMPAT__panic(const char *fmt, ...) +{ + va_list va; + + fprintf(stderr, "*** gcompat panic ***\n"); + + va_start(va, fmt); + vfprintf(stderr, fmt, va); + va_end(va); + + abort(); +} diff --git a/libgcompat/internal.h b/libgcompat/internal.h new file mode 100644 index 0000000..bb107bc --- /dev/null +++ b/libgcompat/internal.h @@ -0,0 +1,14 @@ +#ifndef LIBGCOMPAT_INTERNAL_H +#define LIBGCOMPAT_INTERNAL_H + +void GCOMPAT__panic(const char *fmt, ...) __attribute__((noreturn)); + +#define GCOMPAT__assert_with_reason(chk, fmt, ...) \ + do { \ + if (!(chk)) { \ + GCOMPAT__panic(fmt, __VA_ARGS__); \ + } \ + } \ + while(0); + +#endif |