Merge working tree with build tree.
[m6w6/libmemcached] / libtest / cmdline.h
index 0f0699251d80461d85775472069249bf57d20619..44fd17f92ff4f75ec484fa8e05575e114ef59373 100644 (file)
@@ -39,29 +39,28 @@ public:
 
   class Pipe {
   public:
-    Pipe();
+    Pipe(int);
     ~Pipe();
 
-    int* fd()
-    {
-      return _fd;
-    }
+    int fd();
 
     enum close_t {
-      READ,
-      WRITE
+      READ= 0,
+      WRITE= 1
     };
 
     void reset();
     void close(const close_t& arg);
     void dup_for_spawn(const close_t& arg,
-                       posix_spawn_file_actions_t& file_actions,
-                       const int newfildes);
+                       posix_spawn_file_actions_t& file_actions);
 
     void nonblock();
+    void cloexec();
+    bool read(libtest::vchar_t&);
 
   private:
-    int _fd[2];
+    const int _std_fd;
+    int _pipe_fd[2];
     bool _open[2];
   };
 
@@ -74,7 +73,7 @@ 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();
+  error_t wait(bool nohang= true);
 
   libtest::vchar_t stdout_result() const
   {
@@ -91,6 +90,11 @@ public:
     return _stderr_buffer;
   }
 
+  const char* stderr_c_str() const
+  {
+    return &_stderr_buffer[0];
+  }
+
   size_t stderr_result_length() const
   {
     return _stderr_buffer.size();
@@ -113,6 +117,11 @@ public:
     _use_gdb= arg;
   }
 
+  void use_ptrcheck(bool arg= true)
+  {
+    _use_ptrcheck= arg;
+  }
+
   std::string arguments();
 
   std::string gdb_filename()
@@ -120,6 +129,11 @@ public:
     return  _gdb_filename;
   }
 
+  pid_t pid() const
+  {
+    return _pid;
+  }
+
 private:
   void create_argv(const char *args[]);
   void delete_argv();
@@ -128,6 +142,7 @@ private:
   const bool _use_libtool;
   bool _use_valgrind;
   bool _use_gdb;
+  bool _use_ptrcheck;
   size_t _argc;
   std::string _exectuble_name;
   std::string _exectuble;