From 99f84f47ef5300fa239836395ed7b90538cd8135 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Wed, 26 Jul 2023 10:16:47 -0500 Subject: [PATCH] Silence EPIPE perror_exit() more generically. (Some codepaths got missed.) --- lib/lib.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/lib.c b/lib/lib.c index c9207a99..4473f89f 100644 --- a/lib/lib.c +++ b/lib/lib.c @@ -10,13 +10,16 @@ void verror_msg(char *msg, int err, va_list va) { char *s = ": %s"; - fprintf(stderr, "%s: ", toys.which->name); - if (msg) vfprintf(stderr, msg, va); - else s+=2; - if (err>0) fprintf(stderr, s, strerror(err)); - if (err<0 && CFG_TOYBOX_HELP) - fprintf(stderr, " (see \"%s --help\")", toys.which->name); - if (msg || err) putc('\n', stderr); + // Exit silently in a pipeline + if (err != EPIPE) { + fprintf(stderr, "%s: ", toys.which->name); + if (msg) vfprintf(stderr, msg, va); + else s+=2; + if (err>0) fprintf(stderr, s, strerror(err)); + if (err<0 && CFG_TOYBOX_HELP) + fprintf(stderr, " (see \"%s --help\")", toys.which->name); + if (msg || err) putc('\n', stderr); + } if (!toys.exitval) toys.exitval = (toys.which->flags>>24) ? : 1; } @@ -55,14 +58,11 @@ void error_exit(char *msg, ...) // Die with an error message and strerror(errno) void perror_exit(char *msg, ...) { - // Die silently if our pipeline exited. - if (errno != EPIPE) { - va_list va; + va_list va; - va_start(va, msg); - verror_msg(msg, errno, va); - va_end(va); - } + va_start(va, msg); + verror_msg(msg, errno, va); + va_end(va); xexit(); } -- 2.39.2