From: Joey Hess Date: Sat, 19 Feb 2011 21:35:32 +0000 (-0400) Subject: pee: Propigate exit status of commands run. X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6827d8ff8e7c4e2003c6065d1769c780b4f96973;p=moreutils pee: Propigate exit status of commands run. --- diff --git a/debian/changelog b/debian/changelog index 6d41dff..66f923c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +moreutils (0.44) UNRELEASED; urgency=low + + * pee: Propigate exit status of commands run. + + -- Joey Hess Sat, 19 Feb 2011 17:34:50 -0400 + moreutils (0.43) unstable; urgency=low * chronic: New command, runs a command quietly, unless it fails. diff --git a/pee.c b/pee.c index 6ba38f7..cd3ff20 100644 --- a/pee.c +++ b/pee.c @@ -1,5 +1,7 @@ #include #include +#include +#include /* Licensed under the GPL * Copyright (c) Miek Gieben, 2006 @@ -9,12 +11,19 @@ * pipes _and_ output to standard output */ -void +int close_pipes(FILE **p, size_t i) { + int ret=EXIT_SUCCESS; size_t j; - for (j = 0; j < i; j++) - pclose(p[j]); + for (j = 0; j < i; j++) { + int r = pclose(p[j]); + if (WIFEXITED(r)) + ret |= WEXITSTATUS(r); + else + ret |= 1; + } + return ret; } int @@ -48,7 +57,5 @@ main(int argc, char **argv) { } } } - close_pipes(pipes, argc); - - exit(EXIT_SUCCESS); + exit(close_pipes(pipes, argc)); }