From: François Pinard Date: Wed, 16 Nov 1994 02:47:05 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: old~616 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=4156fce552a004e11845a17e1e3e897aaf367028;p=debian%2Ftar *** empty log message *** --- diff --git a/src/buffer.c b/src/buffer.c index 2be44e82..c16ceba1 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -1130,30 +1130,31 @@ close_archive() ; if (child != -1) { - switch (WTERMSIG(status)) { - case 0: - /* Child voluntarily terminated -- but why? */ - if (WEXITSTATUS(status) == MAGIC_STAT) { - exit(EX_SYSTEM);/* Child had trouble */ - } - if (WEXITSTATUS(status) == (SIGPIPE + 128)) { - /* - * /bin/sh returns this if its child - * dies with SIGPIPE. 'Sok. - */ - break; - } else if (WEXITSTATUS(status)) - msg("child returned status %d", - WEXITSTATUS(status)); - case SIGPIPE: - break; /* This is OK. */ - - default: - msg("child died with signal %d%s", - WTERMSIG(status), - WIFCOREDUMPED(status)? " (core dumped)": ""); + { + if (WIFSIGNALED(status)) + { + /* SIGPIPE is OK, everything else is a problem. */ + if (WTERMSIG (status) != SIGPIPE) + msg("child died with signal %d%s", WTERMSIG(status), + WIFCOREDUMPED(status)? " (core dumped)": ""); + } + else + { + /* Child voluntarily terminated -- but why? */ + if (WEXITSTATUS(status) == MAGIC_STAT) { + exit(EX_SYSTEM);/* Child had trouble */ } - } + if (WEXITSTATUS(status) == (SIGPIPE + 128)) { + /* + * /bin/sh returns this if its child + * dies with SIGPIPE. 'Sok. + */ + break; + } else if (WEXITSTATUS(status)) + msg("child returned status %d", + WEXITSTATUS(status)); + } + } } #endif /* __MSDOS__ */ }