mirror of
https://github.com/thepigeongenerator/mcaselector-lite.git
synced 2025-12-17 11:05:45 +01:00
write error header file
write a header for logging and abrubtly exiting the code.
This commit is contained in:
57
src/error.h
Normal file
57
src/error.h
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdnoreturn.h>
|
||||||
|
|
||||||
|
#include "util/atrb.h"
|
||||||
|
|
||||||
|
#define ERROR_BUF_SIZE 128
|
||||||
|
|
||||||
|
atrb_nonnull(1) atrb_format(printf, 1, 2) extern inline void debug(char const*, ...); // prints a '\n' suffixed debug msg to stdout with a maximum buf size of @ref ERROR_BUF_SIZE
|
||||||
|
atrb_nonnull(1) atrb_format(printf, 1, 2) extern inline void info(char const*, ...); // prints a '\n' suffixed info msg to stdout with a maximum buf size of @ref ERROR_BUF_SIZE
|
||||||
|
atrb_nonnull(1) atrb_format(printf, 1, 2) extern inline void warn(char const*, ...); // prints a '\n' suffixed warn msg to stderr with a maximum buf size of @ref ERROR_BUF_SIZE
|
||||||
|
atrb_nonnull(1) atrb_format(printf, 1, 2) extern inline void error(char const*, ...); // prints a '\n' suffixed error msg to stderr with a maximum buf size of @ref ERROR_BUF_SIZE
|
||||||
|
atrb_nonnull(1) atrb_format(printf, 1, 2) noreturn extern inline void fatal(char const*, ...); // prints a '\n' suffixed fatal msg to stderr with a maximum buf size of @ref ERROR_BUF_SIZE and immediately aborts execution
|
||||||
|
|
||||||
|
// macro to write fmt vardiac args to buf
|
||||||
|
#define WRITE_VA_ARGS(buf, fmt) \
|
||||||
|
{ \
|
||||||
|
va_list args; \
|
||||||
|
va_start(args, fmt); \
|
||||||
|
vsnprintf(buf, ERROR_BUF_SIZE, fmt, args); \
|
||||||
|
va_end(args); \
|
||||||
|
};
|
||||||
|
|
||||||
|
extern inline void debug(char const* restrict fmt, ...) {
|
||||||
|
char buf[ERROR_BUF_SIZE] = {0};
|
||||||
|
WRITE_VA_ARGS(buf, fmt);
|
||||||
|
printf("\033[95mD: \"%s\"\033[0m\n", buf); // reduced parameter use by not using fprintf
|
||||||
|
}
|
||||||
|
|
||||||
|
extern inline void info(char const* fmt, ...) {
|
||||||
|
char buf[ERROR_BUF_SIZE] = {0};
|
||||||
|
WRITE_VA_ARGS(buf, fmt);
|
||||||
|
printf("I: \"%s\"\n", buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern inline void warn(char const* fmt, ...) {
|
||||||
|
char buf[ERROR_BUF_SIZE] = {0};
|
||||||
|
WRITE_VA_ARGS(buf, fmt);
|
||||||
|
fprintf(stderr, "\033[93mW: \"%s\"\033[0m\n", buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern inline void error(char const* fmt, ...) {
|
||||||
|
char buf[ERROR_BUF_SIZE] = {0};
|
||||||
|
WRITE_VA_ARGS(buf, fmt);
|
||||||
|
fprintf(stderr, "\033[91mE: \"%s\"\033[0m\n", buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern inline void fatal(char const* fmt, ...) {
|
||||||
|
char buf[ERROR_BUF_SIZE] = {0};
|
||||||
|
WRITE_VA_ARGS(buf, fmt);
|
||||||
|
fprintf(stderr, "\033[101mF: \"%s\"\033[0m\n", buf);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef WRITE_VA_ARGS
|
||||||
Reference in New Issue
Block a user