X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Fcmdline.h;h=ae4d9ba1d67751f73315277095642842d2d53ed7;hb=4b5f525d64e1a1685b66880822b78d351ea55a82;hp=46f7ad78a886f2997ad3e588920b9da9dd3f832b;hpb=fed85d3c429c3881cd378d10e4dccd30f4fd2478;p=m6w6%2Flibmemcached diff --git a/libtest/cmdline.h b/libtest/cmdline.h index 46f7ad78..ae4d9ba1 100644 --- a/libtest/cmdline.h +++ b/libtest/cmdline.h @@ -42,6 +42,14 @@ #define EXIT_SKIP 77 #define EXIT_FATAL 77 +#ifndef EX_NOEXEC +# define EX_NOEXEC 126 +#endif + +#ifndef EX_NOTFOUND +# define EX_NOTFOUND 127 +#endif + namespace libtest { class Application { @@ -53,7 +61,11 @@ public: enum error_t { SUCCESS= EXIT_SUCCESS, FAILURE= EXIT_FAILURE, - INVALID= 127 + UNINITIALIZED, + SIGTERM_KILLED, + UNKNOWN, + UNKNOWN_SIGNAL, + INVALID_POSIX_SPAWN= 127 }; static const char* toString(error_t arg) @@ -63,12 +75,22 @@ public: case Application::SUCCESS: return "EXIT_SUCCESS"; + case Application::UNINITIALIZED: + return "UNINITIALIZED"; + + case Application::SIGTERM_KILLED: + return "Exit happened via SIGTERM"; + case Application::FAILURE: return "EXIT_FAILURE"; - case Application::INVALID: - return "127"; + case Application::UNKNOWN_SIGNAL: + return "Exit happened via a signal which was not SIGTERM"; + + case Application::INVALID_POSIX_SPAWN: + return "127: Invalid call to posix_spawn()"; + case Application::UNKNOWN: default: break; } @@ -111,7 +133,6 @@ public: void add_option(const std::string&, const std::string&); void add_long_option(const std::string& option_name, const std::string& option_value); error_t run(const char *args[]= NULL); - error_t wait(bool nohang= true); Application::error_t join(); libtest::vchar_t stdout_result() const @@ -201,6 +222,9 @@ private: pid_t _pid; libtest::vchar_t _stdout_buffer; libtest::vchar_t _stderr_buffer; + int _status; + pthread_t _thread; + error_t _app_exit_state; }; static inline std::ostream& operator<<(std::ostream& output, const enum Application::error_t &arg)