From d86e2e94868bd9bc1a2d8b836342b16966bed8c3 Mon Sep 17 00:00:00 2001
From: Lauri Kasanen <cand@gmx.com>
Date: Fri, 23 Mar 2012 19:59:34 +0200
Subject: [PATCH 2/7] Use thread-safe time functions


Signed-off-by: Lauri Kasanen <cand@gmx.com>
---
 src/mk_clock.c |    6 ++++--
 src/mk_utils.c |    3 ++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/mk_clock.c b/src/mk_clock.c
index 1b00d90..bfdb50f 100644
--- a/src/mk_clock.c
+++ b/src/mk_clock.c
@@ -50,12 +50,13 @@ static inline char *_next_buffer(mk_pointer *pointer, char **buffers)
 static void mk_clock_log_set_time(time_t utime)
 {
     char *time_string;
+    struct tm result;
 
     time_string = _next_buffer(&log_current_time, log_time_buffers);
     __sync_bool_compare_and_swap(&log_current_utime, log_current_utime, utime);
 
     strftime(time_string, LOG_TIME_BUFFER_SIZE, "[%d/%b/%G %T %z]",
-             (struct tm *)localtime((time_t *)&utime));
+             localtime_r(&utime, &result));
 
     __sync_bool_compare_and_swap(&log_current_time.data, log_current_time.data, time_string);
 }
@@ -63,11 +64,12 @@ static void mk_clock_log_set_time(time_t utime)
 void mk_clock_header_set_time(time_t utime)
 {
     struct tm *gmt_tm;
+    struct tm result;
     char *time_string;
 
     time_string = _next_buffer(&header_current_time, header_time_buffers);
 
-    gmt_tm = (struct tm *) gmtime(&utime);
+    gmt_tm = gmtime_r(&utime, &result);
     strftime(time_string, HEADER_TIME_BUFFER_SIZE, GMT_DATEFORMAT, gmt_tm);
 
     __sync_bool_compare_and_swap(&header_current_time.data, header_current_time.data, time_string);
diff --git a/src/mk_utils.c b/src/mk_utils.c
index 80c1118..51221c3 100644
--- a/src/mk_utils.c
+++ b/src/mk_utils.c
@@ -488,7 +488,8 @@ void mk_print(int type, const char *format, ...)
     }
 
     now = time(NULL);
-    current = localtime(&now);
+    struct tm result;
+    current = localtime_r(&now, &result);
     printf("%s[%s%i/%02i/%02i %02i:%02i:%02i%s]%s ",
            bold_color, reset_color,
            current->tm_year + 1900,
-- 
1.7.2.1

