- s = strftime (buf, bufsize, "%H:%M:%S", &now);
- bufsize -= s;
- s += snprintf (&buf[s], bufsize, ".%06" PRId64, (int64_t) tv.tv_usec);
- bufsize -= s;
+ if (_last_receipt.tv_sec != 0 && show_delta_time) {
+ struct timeval delta;
+ timersub (&tv, &_last_receipt, &delta);
+ s = snprintf (buf, bufsize, "+%02" PRId64 ":%06" PRId64, (int64_t) delta.tv_sec, (int64_t) delta.tv_usec);
+ bufsize -= s;
+ } else {
+ localtime_r (&tv.tv_sec, &now);
+ s = strftime (buf, bufsize, "%H:%M:%S", &now);
+ bufsize -= s;
+ s += snprintf (&buf[s], bufsize, ".%06" PRId64, (int64_t) tv.tv_usec);
+ bufsize -= s;
+ }
+
+ _last_receipt = tv;