aboutsummaryrefslogtreecommitdiff
path: root/src/log_colored.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/log_colored.c')
-rw-r--r--src/log_colored.c81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/log_colored.c b/src/log_colored.c
new file mode 100644
index 0000000..a8a26e3
--- /dev/null
+++ b/src/log_colored.c
@@ -0,0 +1,81 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <assert.h>
+
+#include "log_colored.h"
+
+
+int log_open_colored(void)
+{
+ if (!getenv("TERM")) {
+ fprintf(stderr, "%s\n", "Missing TERM variable in your environment.");
+ return 1;
+ }
+ if (!strstr(getenv("TERM"), "linux")
+ && !strstr(getenv("TERM"), "xterm"))
+ {
+ fprintf(stderr, "%s\n", "Unsupported TERM variable in your environment");
+ return 1;
+ }
+ return 0;
+}
+
+void log_close_colored(void)
+{
+ return;
+}
+
+void log_fmt_colored(log_priority prio, const char *fmt, ...)
+{
+ char out[LOGMSG_MAXLEN+1] = {0};
+ va_list arglist;
+
+ assert(fmt);
+ va_start(arglist, fmt);
+ assert( vsnprintf(&out[0], LOGMSG_MAXLEN, fmt, arglist) >= 0 );
+ va_end(arglist);
+
+ switch (prio) {
+ case DEBUG:
+ printf("[DEBUG] %s\n", out);
+ break;
+ case NOTICE:
+ printf("[" GRN "NOTICE" RESET "] %s\n", out);
+ break;
+ case WARNING:
+ printf("[" YEL "WARNING" RESET "] %s\n", out);
+ break;
+ case ERROR:
+ printf("[" RED "ERROR" RESET "] %s\n", out);
+ break;
+ }
+}
+
+void log_fmtex_colored(log_priority prio, const char *srcfile,
+ size_t line, const char *fmt, ...)
+{
+ char out[LOGMSG_MAXLEN+1] = {0};
+ va_list arglist;
+
+ assert(fmt);
+ va_start(arglist, fmt);
+ assert( vsnprintf(&out[0], LOGMSG_MAXLEN, fmt, arglist) >= 0 );
+ va_end(arglist);
+
+ switch (prio) {
+ case DEBUG:
+ printf("[DEBUG] %s.%lu: %s\n", srcfile, line, out);
+ break;
+ case NOTICE:
+ printf("[" GRN "NOTICE" RESET "] %s.%lu: %s\n", srcfile, line, out);
+ break;
+ case WARNING:
+ printf("[" YEL "WARNING" RESET "] %s.%lu: %s\n", srcfile, line, out);
+ break;
+ case ERROR:
+ printf("[" RED "ERROR" RESET "] %s.%lu: %s\n", srcfile, line, out);
+ break;
+ }
+}