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>
dev
Antonio Caggiano 5 years ago committed by Simon Ser
parent fdc9b4bce5
commit 2eda978e95
  1. 14
      compositor/main.c

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

Loading…
Cancel
Save