extract_timestamp(e, sort_by, &ts);
if (ts.tv_sec < file->prev_sec || (ts.tv_sec == file->prev_sec && ts.tv_nsec < file->prev_nsec)) {
- char buffer[512];
- int r = snprintf(buffer, sizeof buffer, "INFO: Following log entry could not be sorted and is out of order.\n");
- written_bytes = write(file->fd, buffer, r);
+ struct logger_entry_with_msg msg;
+ memcpy(&msg, e, sizeof *e);
+ int r = snprintf(msg.msg, sizeof msg.msg, "%s%c%s", log_buffer_get_tag(e), '\0', "INFO: Following log entry could not be sorted and is out of order.");
- if (written_bytes < 0) {
- ERR("unable to write out-of-order message %m");
+ if (r < 0) {
+ ERR("unable to format out-of-order message %m");
written_bytes = 0;
+ } else {
+ msg.header.len = r + sizeof *e;
+
+ written_bytes += log_print_log_line(file->format, file->fd, &msg.header);
+
+ if (written_bytes < 0) {
+ ERR("unable to write out-of-order message %m");
+ written_bytes = 0;
+ }
}
}