From a73803770586c46cccc7dee7dffc2aa27e9b96c6 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Thu, 14 Jul 2022 14:51:24 +0200 Subject: [PATCH] client: check for stdout errors Return with an error code from chronyc if the command is expected to print some data and fflush() or ferror() indicates an error. This should make it easier for scripts to detect missing data when redirected to a file. --- client.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/client.c b/client.c index 242bd6d..6f78cb1 100644 --- a/client.c +++ b/client.c @@ -3238,8 +3238,17 @@ process_line(char *line) if (do_normal_submit) { ret = request_reply(&tx_message, &rx_message, RPY_NULL, 1); } + fflush(stderr); - fflush(stdout); + + if (fflush(stdout) != 0 || ferror(stdout) != 0) { + LOG(LOGS_ERR, "Could not write to stdout"); + + /* Return error for commands that print data */ + if (!do_normal_submit) + return 0; + } + return ret; }