Fix: libcompat is now part of libcommon
[lttng-tools.git] / src / common / time.c
index 5519e3ab4715240cfd1b27ef7701d36c1b737039..387db3e3273224ff7f0837f02725ce36bfc92976 100644 (file)
@@ -16,6 +16,7 @@
  */
 
 #include <common/time.h>
+#include <common/error.h>
 #include <common/macros.h>
 #include <stddef.h>
 #include <stdint.h>
@@ -68,6 +69,37 @@ struct timespec timespec_abs_diff(struct timespec t1, struct timespec t2)
        return res;
 }
 
+LTTNG_HIDDEN
+int time_t_to_ISO8601(char *dest, size_t dest_size, time_t time)
+{
+       int ret;
+       struct tm tm, *timeinfo;
+
+       if (dest_size < ISO8601_LEN) {
+               ERR("Failed to format time to ISO8601 destination too small");
+               ret = -1;
+               goto end;
+       }
+
+       timeinfo = localtime_r(&time, &tm);
+       if (!timeinfo) {
+               PERROR("localtime");
+               ret = -1;
+               goto end;
+       }
+
+       ret = strftime(dest, dest_size, ISO8601_FORMAT, timeinfo);
+       if (ret == 0) {
+               ERR("Failed to format time to ISO8601");
+               ret = -1;
+               goto end;
+       }
+
+       ret = 0;
+end:
+       return ret;
+}
+
 static
 void __attribute__((constructor)) init_locale_utf8_support(void)
 {
@@ -76,7 +108,7 @@ void __attribute__((constructor)) init_locale_utf8_support(void)
 
        if (program_locale && strstr(program_locale, "utf8")) {
                utf8_output_supported = true;
-       } else if (strstr(lang, "utf8")) {
+       } else if (lang && strstr(lang, "utf8")) {
                utf8_output_supported = true;
        }
 }
This page took 0.024808 seconds and 5 git commands to generate.