#include <common.h>
#include <log.h>

int log_level = log_info;

int enable_log_position = 0;
int enable_log_color = 1;

void log0(const char* file, const char* function, int line, int level, const char* str, ...) {
    if (level > log_level) return;
    if (level > log_trace || level < 0) return;

    time_t timer;
    char buffer[100];
    struct tm* tm_info;

    time(&timer);
    tm_info = localtime(&timer);

    if (enable_log_color)
        printf("%s", log_color[level]);

    strftime(buffer, 100, "%Y-%m-%d %H:%M:%S", tm_info);
    printf("[%s][%s]", buffer, log_text[level]);

    if (enable_log_position) printf("[%s,func:%s,line:%d]", file, function, line);

    va_list vlist;
    va_start(vlist, str);
    vfprintf(stdout, str, vlist);
    va_end(vlist);
    if (enable_log_color)
        printf("%s", RESET);

    // printf("\n");
    // if(enable_log_color)
    // printf(log_color[level]);
    fflush(stdout);

    if (log_level == log_fatal) {
        about_to_exit = 1;
    }
}

void log_bare(int level, const char* str, ...) {
    if (level > log_level) return;
    if (level > log_trace || level < 0) return;
    if (enable_log_color)
        printf("%s", log_color[level]);
    va_list vlist;
    va_start(vlist, str);
    vfprintf(stdout, str, vlist);
    va_end(vlist);
    if (enable_log_color)
        printf("%s", RESET);
    fflush(stdout);
}