00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "ux.hpp"
00019
00020 using namespace Ux;
00021
00022
00023
00024
00025 std::ostream& Ux::operator<<(std::ostream& s, const ExitStatus& status)
00026 {
00027 int n = (ExitStatus&)status;
00028
00029 if (WIFEXITED(n))
00030 s << "Exit value " << WEXITSTATUS(n);
00031 else {
00032 char *desc;
00033 char *signame = get_macrostr("signal", WTERMSIG(n), &desc);
00034 if (desc[0] == '?')
00035 desc = signame;
00036 if (signame[0] == '?')
00037 s << "Signal #" << WTERMSIG(n);
00038 else
00039 s << desc;
00040 if (WCOREDUMP(n))
00041 s << " - core dumped";
00042 if (WIFSTOPPED(n))
00043 s << " (stopped)";
00044 #if defined(_XOPEN_UNIX) && !defined(LINUX)
00045 else if (WIFCONTINUED(n))
00046 s << " (continued)";
00047 #endif
00048 }
00049 return s;
00050 }