lwsl stderr sink use formatted time
authorSebastian Reimer <office@liquid-office.eu>
Sat, 20 Feb 2016 23:45:03 +0000 (07:45 +0800)
committerAndy Green <andy.green@linaro.org>
Sat, 20 Feb 2016 23:45:03 +0000 (07:45 +0800)
AG change to use localtime_r for threadsafety and leave old method as fallback

lib/libwebsockets.c

index d3c9154..86625be 100644 (file)
@@ -922,18 +922,30 @@ lws_ensure_user_space(struct lws *wsi)
 
 LWS_VISIBLE void lwsl_emit_stderr(int level, const char *line)
 {
+       time_t o_now = time(NULL);
+       struct tm o_now_time;
        unsigned long long now;
        char buf[300];
-       int n;
+       int n, ok = localtime_r(&o_now, &o_now_time) != NULL;
 
        buf[0] = '\0';
        for (n = 0; n < LLL_COUNT; n++) {
                if (level != (1 << n))
                        continue;
                now = time_in_microseconds() / 100;
-               sprintf(buf, "[%llu:%04d] %s: ",
-                       (unsigned long long) now / 10000,
-                       (int)(now % 10000), log_level_names[n]);
+               if (ok)
+                       sprintf(buf, "[%04d/%02d/%02d %02d:%02d:%02d:%04d] %s: ",
+                               o_now_time.tm_year + 1900,
+                               o_now_time.tm_mon,
+                               o_now_time.tm_mday,
+                               o_now_time.tm_hour,
+                               o_now_time.tm_min,
+                               o_now_time.tm_sec,
+                               (int)(now % 10000), log_level_names[n]);
+               else
+                       sprintf(buf, "[%llu:%04d] %s: ",
+                                       (unsigned long long) now / 10000,
+                                       (int)(now % 10000), log_level_names[n]);
                break;
        }