From edb01af9b4789b9c3b908329f6be5819e2cfe954 Mon Sep 17 00:00:00 2001 From: Vasyl Vavrychuk Date: Mon, 25 Apr 2022 10:59:42 +0300 Subject: [PATCH 03/17] Fix 'unused-result' warnings This fixes warnings such as: ignoring return value of 'chdir', declared with attribute warn_unused_result [-Wunused-result] drm-backend backport from: https://patchwork.yoctoproject.org/project/yocto/cover/20220425075954.10427-1-vasyl.vavrychuk@opensynergy.com/ Signed-off-by: Vasyl Vavrychuk --- psplash-systemd.c | 36 +++++++++++++++++++++++++++++++++--- psplash-write.c | 23 ++++++++++++++++++----- psplash.c | 5 ++++- 3 files changed, 55 insertions(+), 9 deletions(-) diff --git a/psplash-systemd.c b/psplash-systemd.c index 840bd4e..dcf7e61 100644 --- a/psplash-systemd.c +++ b/psplash-systemd.c @@ -32,6 +32,7 @@ int get_progress(void) int r; char buffer[20]; int len; + ssize_t written; /* Connect to the system bus */ r = sd_bus_new(&bus); @@ -71,11 +72,36 @@ int get_progress(void) current_progress = progress; len = snprintf(buffer, 20, "PROGRESS %d", (int)(current_progress * 100)); - write(pipe_fd, buffer, len + 1); + written = write(pipe_fd, buffer, len + 1); + if (written == -1) { + /* EPIPE could mean that psplash detected boot complete sooner + then psplash-systemd and exited */ + if (errno != EPIPE) { + perror("write"); + r = -1; + goto finish; + } + } else if (written < len + 1) { + fprintf(stderr, "Wrote %zd bytes, less then expected %d bytes\n", + written, len + 1); + r = -1; + goto finish; + } if (progress == 1.0) { printf("Systemd reported progress of 1.0, quit psplash.\n"); - write(pipe_fd, "QUIT", 5); + written = write(pipe_fd, "QUIT", 5); + if (written == -1) { + /* EPIPE could mean that psplash detected boot complete + sooner then psplash-systemd and exited */ + if (errno != EPIPE) { + perror("write"); + r = -1; + goto finish; + } + } else if (written < 5) + fprintf(stderr, "Wrote %zd bytes, less then expected 5 bytes\n", + written); r = -1; } @@ -123,7 +149,11 @@ int main() if (!rundir) rundir = "/run"; - chdir(rundir); + r = chdir(rundir); + if (r < 0) { + perror("chdir"); + goto finish; + } if ((pipe_fd = open (PSPLASH_FIFO,O_WRONLY|O_NONBLOCK)) == -1) { fprintf(stderr, "Error unable to open fifo"); diff --git a/psplash-write.c b/psplash-write.c index eee0ea3..16b87e1 100644 --- a/psplash-write.c +++ b/psplash-write.c @@ -21,8 +21,10 @@ int main(int argc, char **argv) { - char *rundir; - int pipe_fd; + char *rundir; + int pipe_fd; + size_t count; + ssize_t written; rundir = getenv("PSPLASH_FIFO_DIR"); @@ -35,7 +37,10 @@ int main(int argc, char **argv) exit(-1); } - chdir(rundir); + if (chdir(rundir)) { + perror("chdir"); + exit(-1); + } if ((pipe_fd = open (PSPLASH_FIFO,O_WRONLY|O_NONBLOCK)) == -1) { @@ -45,8 +50,16 @@ int main(int argc, char **argv) exit (-1); } - write(pipe_fd, argv[1], strlen(argv[1])+1); + count = strlen(argv[1]) + 1; + written = write(pipe_fd, argv[1], count); + if (written == -1) { + perror("write"); + exit(-1); + } else if ((size_t)written < count) { + fprintf(stderr, "Wrote %zd bytes, less then expected %zu bytes\n", + written, count); + exit(-1); + } return 0; } - diff --git a/psplash.c b/psplash.c index 838ac13..62244ba 100644 --- a/psplash.c +++ b/psplash.c @@ -264,7 +264,10 @@ main (int argc, char** argv) if (!rundir) rundir = "/run"; - chdir(rundir); + if (chdir(rundir)) { + perror("chdir"); + exit(-1); + } if (mkfifo(PSPLASH_FIFO, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP)) { -- 2.25.1