compositor: Quit when failing to open log file
authorAntonio Caggiano <antonio.caggiano@collabora.com>
Thu, 28 May 2020 15:45:57 +0000 (17:45 +0200)
committerSimon Ser <contact@emersion.fr>
Mon, 1 Jun 2020 18:03:33 +0000 (18:03 +0000)
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>
compositor/main.c

index af31c94e6ea68b0a8be21aff2af22e4690436852..1a8bf11551d8ed2a59a3427a5e73415bdfa43d83 100644 (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);