logs-show: show source timestamp in verbose mode

This makes verbose behave like short mode, i.e. try to show
the source timestamp, and fall back to journald timestamp
only if unavailable or unparsable. I think verbose should
be like short, only showing more fields, and showing different
timestamps would be confusing.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2013-08-07 22:55:29 -04:00
parent f02d836794
commit cf40f0be1a

View file

@ -399,11 +399,35 @@ static int output_verbose(
sd_journal_set_data_threshold(j, 0);
r = sd_journal_get_realtime_usec(j, &realtime);
if (r < 0) {
r = sd_journal_get_data(j, "_SOURCE_REALTIME_TIMESTAMP", &data, &length);
if (r == -ENOENT)
log_debug("Source realtime timestamp not found");
else if (r < 0) {
log_full(r == -EADDRNOTAVAIL ? LOG_DEBUG : LOG_ERR,
"Failed to get realtime timestamp: %s", strerror(-r));
"Failed to get source realtime timestamp: %s", strerror(-r));
return r;
} else {
_cleanup_free_ char *value = NULL;
size_t size;
r = parse_field(data, length, "_SOURCE_REALTIME_TIMESTAMP=", &value, &size);
if (r < 0)
log_debug("_SOURCE_REALTIME_TIMESTAMP invalid: %s", strerror(-r));
else {
r = safe_atou64(value, &realtime);
if (r < 0)
log_debug("Failed to parse realtime timestamp: %s",
strerror(-r));
}
}
if (r < 0) {
r = sd_journal_get_realtime_usec(j, &realtime);
if (r < 0) {
log_full(r == -EADDRNOTAVAIL ? LOG_DEBUG : LOG_ERR,
"Failed to get realtime timestamp: %s", strerror(-r));
return r;
}
}
r = sd_journal_get_cursor(j, &cursor);