From 7915f52495756c3d7c814f3c89a0ba9457a130df Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Thu, 4 Jul 2024 16:08:46 +0200 Subject: [PATCH] logging: add function to send message to foreground process --- logging.c | 13 ++++++++++++- logging.h | 5 ++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/logging.c b/logging.c index ec9ec53..732165e 100644 --- a/logging.c +++ b/logging.c @@ -185,7 +185,7 @@ void LOG_Message(LOG_Severity severity, /* Send the message also to the foreground process if it is still running, or stderr if it is still open */ if (parent_fd > 0) { - if (write(parent_fd, buf, strlen(buf) + 1) < 0) + if (!LOG_NotifyParent(buf)) ; /* Not much we can do here */ } else if (system_log && parent_fd == 0) { system_log = 0; @@ -291,6 +291,17 @@ LOG_SetParentFd(int fd) /* ================================================== */ +int +LOG_NotifyParent(const char *message) +{ + if (parent_fd <= 0) + return 1; + + return write(parent_fd, message, strlen(message) + 1) > 0; +} + +/* ================================================== */ + void LOG_CloseParentFd() { diff --git a/logging.h b/logging.h index ff2e30e..4dfef0b 100644 --- a/logging.h +++ b/logging.h @@ -126,7 +126,10 @@ extern void LOG_OpenSystemLog(void); /* Stop using stderr and send fatal message to the foreground process */ extern void LOG_SetParentFd(int fd); -/* Close the pipe to the foreground process so it can exit */ +/* Send a message to the foreground process */ +extern int LOG_NotifyParent(const char *message); + +/* Close the pipe to the foreground process */ extern void LOG_CloseParentFd(void); /* File logging functions */