summaryrefslogtreecommitdiff
path: root/src/logging.c
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2020-09-29 06:51:02 +0000
committer0scar <qgt268@alumni.ku.dk>2023-07-28 09:48:17 +0000
commit6c16f339224a4736f4ed57d15bb3e5f968a635ab (patch)
treeab13afea4b6f9acfb4a139a3125f265c90bc9d80 /src/logging.c
Initial independent commit
Diffstat (limited to 'src/logging.c')
-rw-r--r--src/logging.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/logging.c b/src/logging.c
new file mode 100644
index 0000000..2ca5368
--- /dev/null
+++ b/src/logging.c
@@ -0,0 +1,80 @@
+#include <stdlib.h>
+#include <engine/logging.h>
+
+char *itoa(i32 x) {
+ const i32 size = (((i32)ceil(log10((f64)x)))+1) * sizeof(char);
+ char *retval = (char*)malloc(size);
+ if (retval == NULL) {
+ perror("Failed to allocate memory for itoa");
+ exit(EXIT_FAILURE);
+ }
+ sprintf(retval, "%d", x);
+ return retval;
+}
+
+void _log(FILE *stream, const char *prefix, const char *fmt, va_list ap) {
+ if (stream == NULL) {
+ fprintf(stderr, "_log got NULL in stream argument\n");
+ exit(EXIT_FAILURE);
+ }
+ fputs(prefix, stream);
+ vfprintf(stream, fmt, ap);
+}
+
+void LOG(const char *fmt, ...) {
+ va_list ap;
+ va_start(ap, fmt);
+ _log(stdout, "[" TERM_COLOR_BLUE "LOG" TERM_COLOR_RESET "] ", fmt, ap);
+ va_end(ap);
+ puts("");
+}
+
+void INFO_(const char *fmt, ...) {
+ va_list ap;
+ va_start(ap, fmt);
+ _log(stdout, "[" TERM_COLOR_GREEN "INFO" TERM_COLOR_RESET "] ", fmt, ap);
+ va_end(ap);
+}
+
+void INFO(const char *fmt, ...) {
+ va_list ap;
+ va_start(ap, fmt);
+ _log(stdout, "[" TERM_COLOR_GREEN "INFO" TERM_COLOR_RESET "] ", fmt, ap);
+ va_end(ap);
+ puts("");
+}
+
+void __DEBUG(const char* file, const i32 line, const char* func, const char *fmt, ...) {
+ va_list ap;
+
+ const usize prefix_len = 1024;
+
+ char *prefix = malloc(sizeof(char) * 1024);
+
+ snprintf(prefix,
+ prefix_len,
+ "["TERM_COLOR_YELLOW"DEBUG"TERM_COLOR_RESET"] "
+ "%s:%d <%s> ", file, line, func);
+
+ va_start(ap, fmt);
+ _log(stdout, prefix, fmt, ap);
+ va_end(ap);
+
+ free(prefix);
+}
+
+void WARN(const char *fmt, ...) {
+ va_list ap;
+ va_start(ap, fmt);
+ _log(stderr, "[" TERM_COLOR_PURPLE "WARN" TERM_COLOR_RESET "] ", fmt, ap);
+ va_end(ap);
+ puts("");
+}
+
+void ERROR(const char *fmt, ...) {
+ va_list ap;
+ va_start(ap, fmt);
+ _log(stderr, "[" TERM_COLOR_RED "ERROR" TERM_COLOR_RESET "] ", fmt, ap);
+ va_end(ap);
+ puts("");
+}