#include "util.h" #include #include #include #include #define DEFAULT_EXEC_NAME "httpserver" const char *EXEC_NAME = DEFAULT_EXEC_NAME; static bool need_free_out_of_memory_msg = false; NO_SANITIZE static const char *out_of_memory_msg = DEFAULT_EXEC_NAME ": error: out of memory\n"; void set_exec_name(const char *argv0) { const char *slash = strrchr(argv0, '/'); if (!slash) { EXEC_NAME = argv0; } else { EXEC_NAME = slash + 1; } if (need_free_out_of_memory_msg) { free((char *) out_of_memory_msg); } } void log_error(const char *fmt, ...) { fprintf(stderr, "%s: error: ", EXEC_NAME); va_list args; va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); fputc('\n', stderr); }