src/log.c
changeset 21 0911d0b828d4
child 22 c339c020fd33
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/log.c	Sun Mar 01 01:48:14 2009 +0200
@@ -0,0 +1,73 @@
+
+#include "log.h"
+
+#include <stdio.h>
+#include <stdarg.h>
+
+#define _LOG_LEVEL_NAME(ll) case LOG_ ## ll: return #ll;
+const char *log_level_name (enum log_level level)
+{
+    switch (level) {
+        _LOG_LEVEL_NAME(DEBUG)
+        _LOG_LEVEL_NAME(INFO)
+        _LOG_LEVEL_NAME(WARN)
+        _LOG_LEVEL_NAME(ERROR)
+        _LOG_LEVEL_NAME(FATAL)
+        default: return "???";
+    }
+}
+
+/*
+ * Output the "[TYPE] FUNC: " header
+ */
+void _log_header (enum log_level level, const char *func)
+{
+    printf("[%5s] %s: ", log_level_name(level), func);
+}
+
+void log_msg (enum log_level level, const char *func, const char *format, ...)
+{
+    va_list vargs;
+    
+    _log_header(level, func);
+    
+    // formatted output
+    va_start(vargs, format);
+    vprintf(format, vargs);
+    va_end(vargs);
+
+    // newline
+    printf("\n");
+}
+
+void _log_err (err_t err, const char *func, const char *format, ...)
+{
+    va_list vargs;
+
+    // header
+    _log_header(LOG_ERROR, func);
+    
+    // formatted output
+    va_start(vargs, format);
+    vprintf(format, vargs);
+    va_end(vargs);
+
+    // err_code and newline
+    printf(": %s\n", error_name(err));
+}
+
+void _log_err_info (struct error_info *err, const char *func, const char *format, ...)
+{
+    va_list vargs;
+
+    // header
+    _log_header(LOG_ERROR, func);
+    
+    // formatted output
+    va_start(vargs, format);
+    vprintf(format, vargs);
+    va_end(vargs);
+
+    // err_code and newline
+    printf(": %s\n", error_msg(err));
+}