diff options
Diffstat (limited to 'libraries/nonstd.h')
| -rw-r--r-- | libraries/nonstd.h | 87 |
1 files changed, 2 insertions, 85 deletions
diff --git a/libraries/nonstd.h b/libraries/nonstd.h index 531834d..f1848d3 100644 --- a/libraries/nonstd.h +++ b/libraries/nonstd.h @@ -77,12 +77,12 @@ NONSTD_DEF void *safe_realloc(void *ptr, size_t item_size, size_t count); #define UNUSED(value) (void)(value) #define TODO(message) \ do { \ - fprintf(stderr, "%s:%d: TODO: %s\n", __FILE__, __LINE__, message); \ + TraceLog(LOG_ERROR, "%s:%d: TODO: %s", __FILE__, __LINE__, message); \ abort(); \ } while (0) #define UNREACHABLE(message) \ do { \ - fprintf(stderr, "%s:%d: UNREACHABLE: %s\n", __FILE__, __LINE__, message); \ + TraceLog(LOG_ERROR, "%s:%d: UNREACHABLE: %s", __FILE__, __LINE__, message); \ abort(); \ } while (0) @@ -315,29 +315,6 @@ NONSTD_DEF stringb read_entire_file_sb(const char *filepath); NONSTD_DEF int write_file_sv(const char *filepath, stringv sv); NONSTD_DEF int write_file_sb(const char *filepath, const stringb *sb); -// Logging -typedef enum { - LOG_ERROR, - LOG_WARN, - LOG_INFO, - LOG_DEBUG, -} LogLevel; - -NONSTD_DEF void set_log_level(LogLevel level); -NONSTD_DEF LogLevel get_log_level_from_env(void); -NONSTD_DEF void log_message(FILE *stream, LogLevel level, const char *format, ...); - -#define LOG_INFO_MSG(...) log_message(stdout, LOG_INFO, __VA_ARGS__) -#define LOG_DEBUG_MSG(...) log_message(stdout, LOG_DEBUG, __VA_ARGS__) -#define LOG_WARN_MSG(...) log_message(stderr, LOG_WARN, __VA_ARGS__) -#define LOG_ERROR_MSG(...) log_message(stderr, LOG_ERROR, __VA_ARGS__) - -#define COLOR_RESET "\033[0m" -#define COLOR_INFO "\033[32m" -#define COLOR_DEBUG "\033[36m" -#define COLOR_WARNING "\033[33m" -#define COLOR_ERROR "\033[31m" - #ifdef NONSTD_IMPLEMENTATION NONSTD_DEF void *safe_malloc(size_t item_size, size_t count) { @@ -587,66 +564,6 @@ NONSTD_DEF int write_file_sb(const char *filepath, const stringb *sb) { return write_entire_file(filepath, sb->data, sb->length); } -// Logging Implementation - -static LogLevel max_level = LOG_INFO; - -static const char *level_strings[] = { - "ERROR", - "WARN", - "INFO", - "DEBUG", -}; - -static const char *level_colors[] = { - COLOR_ERROR, - COLOR_WARNING, - COLOR_INFO, - COLOR_DEBUG, -}; - -NONSTD_DEF void set_log_level(LogLevel level) { - max_level = level; -} - -NONSTD_DEF LogLevel get_log_level_from_env(void) { - const char *env = getenv("LOG_LEVEL"); - if (env) { - int level = atoi(env); - if (level >= 0 && level <= 3) { - return (LogLevel)level; - } - } - - return max_level; -} - -NONSTD_DEF void log_message(FILE *stream, LogLevel level, const char *format, ...) { - if (max_level < level) - return; - - struct timeval tv; - gettimeofday(&tv, NULL); - struct tm *tm_info = localtime(&tv.tv_sec); - - char time_str[24]; - strftime(time_str, sizeof(time_str), "%Y-%m-%d %H:%M:%S", tm_info); - - const char *color = isatty(fileno(stream)) ? level_colors[level] : ""; - const char *reset = isatty(fileno(stream)) ? COLOR_RESET : ""; - - const char *log_format = "%s[%s.%03d] [%-5s] "; - fprintf(stream, log_format, color, time_str, (int)(tv.tv_usec / 1000), level_strings[level]); - - va_list args; - va_start(args, format); - vfprintf(stream, format, args); - va_end(args); - - fprintf(stream, "%s\n", reset); - fflush(stream); -} - // PPM Image Implementation NONSTD_DEF Canvas ppm_init(u32 width, u32 height) { |
