// Copyright (C) 2023, Jakob Wakeling // All rights reserved. #include "log.h" #include #include #include bool __debug, __warned; [[noreturn]] void log_abort(const char *restrict format, ...) { fflush(stderr); va_list args; va_start(args, format); vfprintf(stderr, format, args); fputc('\n', stderr); va_end(args); abort(); } [[noreturn]] void log_fatal(int status, const char *restrict format, ...) { fflush(stderr); va_list args; va_start(args, format); vfprintf(stderr, format, args); fputc('\n', stderr); va_end(args); exit(status); } void log_print(const char *restrict format, ...) { fflush(stderr); va_list args; va_start(args, format); vfprintf(stderr, format, args); fputc('\n', stderr); va_end(args); } void log_debug(const char *restrict format, ...) { if (!__debug) { return; } fflush(stderr); va_list args; va_start(args, format); vfprintf(stderr, format, args); fputc('\n', stderr); va_end(args); }