]> git.ozlabs.org Git - petitboot/blobdiff - lib/log/log.c
lib/process: Add process_get_stdout
[petitboot] / lib / log / log.c
index b250a9ec26e71beea0761a44ce0efac729b50b2b..5466d817575277ab32f7a827f822cb36ccc08965 100644 (file)
@@ -1,6 +1,8 @@
 
 #include <assert.h>
 #include <stdarg.h>
+#include <stdlib.h>
+#include <time.h>
 
 #include "log.h"
 
@@ -9,11 +11,19 @@ static bool debug;
 
 static void __log(const char *fmt, va_list ap)
 {
+       char hms[20] = {'\0'};
+       time_t t;
+
        if (!logf)
                return;
+
+       /* Add timestamp */
+       t = time(NULL);
+       strftime(hms, sizeof(hms), "%T", localtime(&t));
+       fprintf(logf, "[%s] ", hms);
+
        vfprintf(logf, fmt, ap);
-       if (debug)
-               fflush(logf);
+       fflush(logf);
 }
 
 void pb_log(const char *fmt, ...)
@@ -24,6 +34,15 @@ void pb_log(const char *fmt, ...)
        va_end(ap);
 }
 
+void _pb_log_fn(const char *func, const char *fmt, ...)
+{
+       va_list ap;
+       pb_log("%s: ", func);
+       va_start(ap, fmt);
+       __log(fmt, ap);
+       va_end(ap);
+}
+
 void pb_debug(const char *fmt, ...)
 {
        va_list ap;
@@ -34,6 +53,28 @@ void pb_debug(const char *fmt, ...)
        va_end(ap);
 }
 
+void _pb_debug_fn(const char *func, const char *fmt, ...)
+{
+       va_list ap;
+       if (!debug)
+               return;
+       pb_log("%s: ", func);
+       va_start(ap, fmt);
+       __log(fmt, ap);
+       va_end(ap);
+}
+
+void _pb_debug_fl(const char *func, int line, const char *fmt, ...)
+{
+       va_list ap;
+       if (!debug)
+               return;
+       pb_log("%s:%d: ", func, line);
+       va_start(ap, fmt);
+       __log(fmt, ap);
+       va_end(ap);
+}
+
 void __pb_log_init(FILE *fp, bool _debug)
 {
        if (logf)
@@ -42,6 +83,16 @@ void __pb_log_init(FILE *fp, bool _debug)
        debug = _debug;
 }
 
+void pb_log_set_debug(bool _debug)
+{
+       debug = _debug;
+}
+
+bool pb_log_get_debug(void)
+{
+       return debug;
+}
+
 FILE *pb_log_get_stream(void)
 {
        static FILE *null_stream;