diff options
-rw-r--r-- | libbutl/process.cxx | 18 | ||||
-rw-r--r-- | libbutl/process.mxx | 14 |
2 files changed, 22 insertions, 10 deletions
diff --git a/libbutl/process.cxx b/libbutl/process.cxx index f6c498e..5505fde 100644 --- a/libbutl/process.cxx +++ b/libbutl/process.cxx @@ -106,19 +106,25 @@ namespace butl { // process_exit // - ostream& - operator<< (ostream& os, process_exit pe) + LIBBUTL_SYMEXPORT string + to_string (process_exit pe) { + string r; + if (pe.normal ()) - os << "exited with code " << static_cast<uint16_t> (pe.code ()); + { + r = "exited with code "; + r += std::to_string (pe.code ()); + } else { - os << "terminated abnormally: " << pe.description (); + r = "terminated abnormally: "; + r += pe.description (); if (pe.core ()) - os << " (core dumped)"; + r += " (core dumped)"; } - return os; + return r; } // process diff --git a/libbutl/process.mxx b/libbutl/process.mxx index 27c13fa..199273b 100644 --- a/libbutl/process.mxx +++ b/libbutl/process.mxx @@ -15,7 +15,7 @@ #ifndef __cpp_lib_modules #include <string> #include <vector> -#include <iosfwd> +#include <ostream> #include <cstddef> // size_t #include <cstdint> // uint32_t #include <system_error> @@ -200,7 +200,7 @@ LIBBUTL_MODEXPORT namespace butl description () const; }; - // Print canonical exit status diagnostics: + // Canonical exit status description: // // "terminated abnormally: <...> (core dumped)" // "exited with code <...>" @@ -209,8 +209,14 @@ LIBBUTL_MODEXPORT namespace butl // // cerr << "process " << args[0] << " " << *pr.exit << endl; // - LIBBUTL_SYMEXPORT std::ostream& - operator<< (std::ostream&, process_exit); + LIBBUTL_SYMEXPORT std::string + to_string (process_exit); + + inline std::ostream& + operator<< (std::ostream& os, process_exit pe) + { + return os << to_string (pe); + } class LIBBUTL_SYMEXPORT process { |