* Use strsignal if available to give better error messages for

builders that fail due to a signal.
This commit is contained in:
Eelco Dolstra 2007-12-14 14:49:35 +00:00
parent 1e90b4189d
commit df303666bc
2 changed files with 14 additions and 2 deletions

View file

@ -256,6 +256,10 @@ AM_CONDITIONAL(INIT_STATE, test "$init_state" = "yes")
AC_CHECK_FUNCS([setresuid setreuid lchown]) AC_CHECK_FUNCS([setresuid setreuid lchown])
# Nice to have, but not essential.
AC_CHECK_FUNCS([strsignal])
# This is needed if ATerm, Berkeley DB or bzip2 are static libraries, # This is needed if ATerm, Berkeley DB or bzip2 are static libraries,
# and the Nix libraries are dynamic. # and the Nix libraries are dynamic.
if test "$(uname)" = "Darwin"; then if test "$(uname)" = "Darwin"; then

View file

@ -8,6 +8,7 @@
#include <cerrno> #include <cerrno>
#include <cstdio> #include <cstdio>
#include <sstream> #include <sstream>
#include <cstring>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/wait.h> #include <sys/wait.h>
@ -960,8 +961,15 @@ string statusToString(int status)
if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) {
if (WIFEXITED(status)) if (WIFEXITED(status))
return (format("failed with exit code %1%") % WEXITSTATUS(status)).str(); return (format("failed with exit code %1%") % WEXITSTATUS(status)).str();
else if (WIFSIGNALED(status)) else if (WIFSIGNALED(status)) {
return (format("failed due to signal %1%") % WTERMSIG(status)).str(); int sig = WTERMSIG(status);
#if HAVE_STRSIGNAL
const char * description = strsignal(sig);
return (format("failed due to signal %1% (%2%)") % sig % description).str();
#else
return (format("failed due to signal %1%") % sig).str();
#endif
}
else else
return "died abnormally"; return "died abnormally";
} else return "succeeded"; } else return "succeeded";