Commit f45698df authored by Daniel Vetter's avatar Daniel Vetter

lib/igt_core: don't add newlines in logging functions

igt_kms extensively uses line continuation when dumping state updates
at the debug level. They got badly mangled with the recent changes to
for the log handling functions. Two separate fixes:
- Don't prepend domain and other metainformation when it's just a
  continuation line.
- Dont add newlines when dumping the log recorder.

If someone interleaves different log level messages this will go awry,
but really just don't do that.

Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Daniel Vetter's avatarDaniel Vetter <daniel.vetter@intel.com>
parent 305fb1db
......@@ -290,8 +290,7 @@ static void _igt_log_buffer_dump(void)
i = log_buffer.start;
do {
char *last_line = log_buffer.entries[i];
fprintf(stderr, "%s%s", last_line,
(last_line[strlen(last_line)-1] != '\n') ? "\n" : "");
fprintf(stderr, "%s", last_line);
i++;
} while (i != log_buffer.start && i != log_buffer.end);
......@@ -1590,6 +1589,7 @@ void igt_vlog(const char *domain, enum igt_log_level level, const char *format,
"CRITICAL",
"NONE"
};
static bool line_continuation = false;
assert(format);
......@@ -1605,12 +1605,18 @@ void igt_vlog(const char *domain, enum igt_log_level level, const char *format,
if (vasprintf(&line, format, args) == -1)
return;
if (asprintf(&formatted_line, "(%s:%d) %s%s%s: %s", program_name,
if (line_continuation) {
formatted_line = strdup(line);
if (!formatted_line)
goto out;
} else if (asprintf(&formatted_line, "(%s:%d) %s%s%s: %s", program_name,
getpid(), (domain) ? domain : "", (domain) ? "-" : "",
igt_log_level_str[level], line) == -1) {
goto out;
}
line_continuation = line[strlen(line)] != '\n';
/* append log buffer */
_igt_log_buffer_append(formatted_line);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment