ESH

Executive Shell
git clone http://git.omkov.net/ESH
Log | Tree | Refs | README | Download

ESH/src/util/log.c (37 lines, 966 B) -rw-r--r-- file download

a1eb486 Jakob Wakeling 2023-12-27 13:01:35
0
// Copyright (C) 2023, Jakob Wakeling
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
1
// All rights reserved.
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
2
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
3
#include "log.h"
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
4
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
5
#include <stdarg.h>
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
6
#include <stdio.h>
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
7
#include <stdlib.h>
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
8
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
9
bool __debug, __warned;
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
10
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
11
[[noreturn]] void log_abort(const char *restrict format, ...) {
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
12
	fflush(stderr); va_list args; va_start(args, format);
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
13
	vfprintf(stderr, format, args); fputc('\n', stderr);
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
14
	va_end(args); abort();
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
15
}
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
16
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
17
[[noreturn]] void log_fatal(int status, const char *restrict format, ...) {
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
18
	fflush(stderr); va_list args; va_start(args, format);
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
19
	vfprintf(stderr, format, args); fputc('\n', stderr);
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
20
	va_end(args); exit(status);
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
21
}
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
22
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
23
void log_print(const char *restrict format, ...) {
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
24
	fflush(stderr); va_list args; va_start(args, format);
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
25
	vfprintf(stderr, format, args); fputc('\n', stderr);
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
26
	va_end(args);
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
27
}
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
28
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
29
void log_debug(const char *restrict format, ...) {
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
30
	if (!__debug) { return; }
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
31
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
32
	fflush(stderr); va_list args; va_start(args, format);
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
33
	vfprintf(stderr, format, args); fputc('\n', stderr);
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
34
	va_end(args);
a1eb486 Jakob Wakeling 2023-12-27 13:01:35
35
}
36