From ac4e308140468fe2ee2ae32aa79392645fdbf7db Mon Sep 17 00:00:00 2001 From: Mats Klepsland Date: Mon, 14 Mar 2016 10:31:16 +0100 Subject: [PATCH] util-time: add function to create a UTC time string Add function CreateUtcIsoTimeString to create a UTC time string. --- src/util-time.c | 21 +++++++++++++++++++++ src/util-time.h | 1 + 2 files changed, 22 insertions(+) diff --git a/src/util-time.c b/src/util-time.c index 992650e317..6670a0157a 100644 --- a/src/util-time.c +++ b/src/util-time.c @@ -64,6 +64,7 @@ static SCSpinlock current_time_spinlock; static char live = TRUE; struct tm *SCLocalTime(time_t timep, struct tm *result); +struct tm *SCUtcTime(time_t timep, struct tm *result); void TimeInit(void) { @@ -190,6 +191,26 @@ void CreateIsoTimeString (const struct timeval *ts, char *str, size_t size) } } +void CreateUtcIsoTimeString (const struct timeval *ts, char *str, size_t size) +{ + time_t time = ts->tv_sec; + struct tm local_tm; + struct tm *t = (struct tm*)SCUtcTime(time, &local_tm); + char time_fmt[64] = { 0 }; + + if (likely(t != NULL)) { + strftime(time_fmt, sizeof(time_fmt), "%Y-%m-%dT%H:%M:%S", t); + snprintf(str, size, time_fmt, ts->tv_usec); + } else { + snprintf(str, size, "ts-error"); + } +} + +struct tm *SCUtcTime(time_t timep, struct tm *result) +{ + return gmtime_r(&timep, result); +} + /* * Time Caching code */ diff --git a/src/util-time.h b/src/util-time.h index c2cbd5a22b..fa71cf565b 100644 --- a/src/util-time.h +++ b/src/util-time.h @@ -53,6 +53,7 @@ int TimeModeIsLive(void); struct tm *SCLocalTime(time_t timep, struct tm *result); void CreateTimeString (const struct timeval *ts, char *str, size_t size); void CreateIsoTimeString (const struct timeval *ts, char *str, size_t size); +void CreateUtcIsoTimeString (const struct timeval *ts, char *str, size_t size); time_t SCMkTimeUtc (struct tm *tp); int SCStringPatternToTime (char *string, char **patterns, int num_patterns, struct tm *time);