Module Name:    src
Committed By:   christos
Date:           Wed Dec 30 22:23:38 UTC 2015

Modified Files:
        src/external/bsd/atf/dist/tools: process.cpp process.hpp
            test-program.cpp

Log Message:
Print symbolically why the process exited.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/external/bsd/atf/dist/tools/process.cpp
cvs rdiff -u -r1.1.1.1 -r1.2 src/external/bsd/atf/dist/tools/process.hpp
cvs rdiff -u -r1.2 -r1.3 src/external/bsd/atf/dist/tools/test-program.cpp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/bsd/atf/dist/tools/process.cpp
diff -u src/external/bsd/atf/dist/tools/process.cpp:1.3 src/external/bsd/atf/dist/tools/process.cpp:1.4
--- src/external/bsd/atf/dist/tools/process.cpp:1.3	Tue Feb 11 13:13:45 2014
+++ src/external/bsd/atf/dist/tools/process.cpp	Wed Dec 30 17:23:38 2015
@@ -360,6 +360,25 @@ impl::status::~status(void)
 {
 }
 
+std::string
+impl::status::str(void)
+     const
+{
+    int mutable_status = m_status;
+    std::stringstream rv;
+    if (WIFEXITED(mutable_status))
+	rv << "exit("  << WEXITSTATUS(mutable_status);
+    else if (WIFSTOPPED(mutable_status))
+	rv << "stopped("  << WSTOPSIG(mutable_status);
+    else if (WIFSIGNALED(mutable_status))
+	rv << "terminated("  << WTERMSIG(mutable_status);
+    if (WCOREDUMP(mutable_status))
+	rv << "/core)";
+    else
+	rv << ")";
+    return rv.str();
+}
+
 bool
 impl::status::exited(void)
     const

Index: src/external/bsd/atf/dist/tools/process.hpp
diff -u src/external/bsd/atf/dist/tools/process.hpp:1.1.1.1 src/external/bsd/atf/dist/tools/process.hpp:1.2
--- src/external/bsd/atf/dist/tools/process.hpp:1.1.1.1	Sat Feb  8 14:11:33 2014
+++ src/external/bsd/atf/dist/tools/process.hpp	Wed Dec 30 17:23:38 2015
@@ -207,6 +207,8 @@ class status {
 public:
     ~status(void);
 
+    std::string str(void) const;
+
     bool exited(void) const;
     int exitstatus(void) const;
 

Index: src/external/bsd/atf/dist/tools/test-program.cpp
diff -u src/external/bsd/atf/dist/tools/test-program.cpp:1.2 src/external/bsd/atf/dist/tools/test-program.cpp:1.3
--- src/external/bsd/atf/dist/tools/test-program.cpp:1.2	Tue Feb 11 11:31:38 2014
+++ src/external/bsd/atf/dist/tools/test-program.cpp	Wed Dec 30 17:23:38 2015
@@ -664,7 +664,7 @@ impl::get_metadata(const tools::fs::path
     const tools::process::status status = child.wait();
     if (!status.exited() || status.exitstatus() != EXIT_SUCCESS)
         throw tools::parser::format_error("Test program returned failure "
-                                        "exit status for test case list");
+	    "exit status " + status.str() + " for test case list");
 
     return metadata(parser.get_tcs());
 }

Reply via email to