diff options
author | bonmas14 <bonmas14@gmail.com> | 2025-08-03 19:24:03 +0000 |
---|---|---|
committer | bonmas14 <bonmas14@gmail.com> | 2025-08-03 19:24:03 +0000 |
commit | 471b539bdbf658ff7924b7500f89fd237df8be9b (patch) | |
tree | a6a0b1d8a7a37ebe288cd7e1accf9b16dee203aa /src/cyn_log.c | |
parent | a4d37d76512c293b12aab1f77961f96d572557b7 (diff) | |
download | ungrateful-471b539bdbf658ff7924b7500f89fd237df8be9b.tar.gz ungrateful-471b539bdbf658ff7924b7500f89fd237df8be9b.zip |
Reordering of stuff + plans
Diffstat (limited to 'src/cyn_log.c')
-rw-r--r-- | src/cyn_log.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/cyn_log.c b/src/cyn_log.c new file mode 100644 index 0000000..d2d18f2 --- /dev/null +++ b/src/cyn_log.c @@ -0,0 +1,73 @@ +#include <stdio.h> + +Log_Level cyn_current_log_level = UN_LOG_INFO; + +void cyn_log_write_internal(Log_Level level, String format, va_list vaptr) { + Allocator talloc; + String output; + + if (level < cyn_current_log_level) return; + + + talloc = un_allocator_get_temporary(); + + switch (level) { + case UN_LOG_TRACE: + output = UN_STR("[TRACE] "); + break; + case UN_LOG_DEBUG: + output = UN_STR("[DEBUG] "); + break; + case UN_LOG_INFO: + output = UN_STR("[INFO] "); + break; + case UN_LOG_WARNING: + output = UN_STR("[WARNING] "); + break; + case UN_LOG_ERROR: + output = UN_STR("[ERROR] "); + break; + case UN_LOG_FATAL: + output = UN_STR("[FATAL] "); + break; + default: + break; + } + + output = un_string_concat(output, un_string_vformat(talloc, format, vaptr), talloc); + + switch (level) { + case UN_LOG_RAW: + break; + case UN_LOG_FATAL: // @todo, logging should be part of Cynic. + default: + output = un_string_concat(output, UN_STR("\n"), talloc); + break; + } + + fprintf(stderr, CSTR un_string_to_cstring(output, talloc)); +} + +extern void cyn_log_write_cstring(Log_Level level, u8 *format, ...) { + va_list vaptr; + String temp; + + if (level < cyn_current_log_level) return; + + temp.size = un_string_get_length(format); + temp.data = format; + + va_start(vaptr, format); + cyn_log_write_internal(level, temp, vaptr); + va_end(vaptr); +} + +void cyn_log_write(Log_Level level, String format, ...) { + va_list vaptr; + + if (level < cyn_current_log_level) return; + + va_start(vaptr, format); + cyn_log_write_internal(level, format, vaptr); + va_end(vaptr); +} |