compositor: Quit when failing to open log file

If users ask explicitly to log to a file, it makes sense to quit
when we fail opening that file. Continuing execution would mean
wasting users' time if they expect to find the log file at the
end of the session.

Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com>
Suggested-by: Pekka Paalanen <pekka.paalanen@collabora.com>
This commit is contained in:
Antonio Caggiano 2020-05-28 17:45:57 +02:00 committed by Simon Ser
parent fdc9b4bce5
commit 2eda978e95
1 changed files with 10 additions and 4 deletions

View File

@ -171,23 +171,27 @@ custom_handler(const char *fmt, va_list arg)
weston_log_scope_vprintf(log_scope, fmt, arg);
}
static void
static bool
weston_log_file_open(const char *filename)
{
wl_log_set_handler_server(custom_handler);
if (filename != NULL) {
weston_logfile = fopen(filename, "a");
if (weston_logfile)
if (weston_logfile) {
os_fd_set_cloexec(fileno(weston_logfile));
else
} else {
fprintf(stderr, "Failed to open %s: %s\n", filename, strerror(errno));
return false;
}
}
if (weston_logfile == NULL)
weston_logfile = stderr;
else
setvbuf(weston_logfile, NULL, _IOLBF, 256);
return true;
}
static void
@ -3196,7 +3200,9 @@ wet_main(int argc, char *argv[])
log_scope = weston_log_ctx_add_log_scope(log_ctx, "log",
"Weston and Wayland log\n", NULL, NULL, NULL);
weston_log_file_open(log);
if (!weston_log_file_open(log))
return EXIT_FAILURE;
weston_log_set_handler(vlog, vlog_continue);
logger = weston_log_subscriber_create_log(weston_logfile);