Latest of libtest.
[m6w6/libmemcached] / libtest / cmdline.h
index 0f0699251d80461d85775472069249bf57d20619..a387bcf5b5834583792b3e7a5f393b10ac387a45 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
   {
@@ -120,6 +119,11 @@ public:
     return  _gdb_filename;
   }
 
+  pid_t pid() const
+  {
+    return _pid;
+  }
+
 private:
   void create_argv(const char *args[]);
   void delete_argv();