diff options
Diffstat (limited to 'libgs/src/log.c')
-rw-r--r-- | libgs/src/log.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/libgs/src/log.c b/libgs/src/log.c new file mode 100644 index 0000000..dad6d66 --- /dev/null +++ b/libgs/src/log.c @@ -0,0 +1,30 @@ +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include "log.h" + +static const char *log_levels[] = { + "info", + "warning", + "error", + "fatal", +}; + +void gs_log(enum gs_log_level level, const char *namespace, + const char *format, ...) { + va_list args; + va_start(args, format); + + fprintf(stderr, "%s: %s: ", log_levels[level], namespace); + vfprintf(stderr, format, args); + fprintf(stderr, "\n"); + + if (level == GS_ERROR) { + exit(EXIT_FAILURE); + } else if (level == GS_FATAL) { + abort(); + } + + va_end(args); +} + |