#define _POSIX_C_SOURCE 200809L #include "errors.h" #include #include #include #include #include #include "../utils/time/fmt_time.h" #include "logs.h" // === Static variable static struct logs_config config; // === Functions void errlog_init(bool enabled, int logfile_fd, struct server_config *serv_cfg) { config.enabled = enabled; if (logfile_fd == STDOUT_FILENO) config.logfile_fd = STDERR_FILENO; config.logfile_fd = logfile_fd; config.server_cfg = serv_cfg; } void print_err(void) { print_log_err("%s", get_err()); } void print_log_err(char *format, ...) { if (!config.enabled) return; // Log prefix (time and server name) char *time = get_time(); dprintf(config.logfile_fd, "%s [%s] ERROR ", time, config.server_cfg->server_name); free(time); // Print actual log va_list args; va_start(args, format); vdprintf(config.logfile_fd, format, args); va_end(args); // New line dprintf(config.logfile_fd, "\n"); // Print to stderr fprintf(stderr, "Error: %s", get_err()); } char *get_err(void) { return strerror(errno); }