diff --git a/src/Clock.cpp b/src/Clock.cpp index 529012f..d2827c2 100644 --- a/src/Clock.cpp +++ b/src/Clock.cpp @@ -45,7 +45,20 @@ } const char *clock_iso8601string(struct timeval time) { - return clock_timestring(time, "%Y-%m-%dT%H:%M:%S"); + const char *timestring = clock_timestring(time, "%Y-%m-%dT%H:%M:%S"); + + static char buffer[128]; + int buffer_size = sizeof(buffer); + int written; + written = snprintf( + buffer, buffer_size, "%s.%06li", timestring, time.tv_usec); + + if (written >= buffer_size) { + // It overflowed, so return something useful + return "(iso8601 overflow)"; + } else { + return buffer; + } } const char *clock_iso8601string_now(void) {