Latest of libtest.
[m6w6/libmemcached] / libtest / cmdline.h
index f6da62bea260d02aeae9f1bdddff693cb09588c0..a387bcf5b5834583792b3e7a5f393b10ac387a45 100644 (file)
@@ -39,27 +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];
   };
 
@@ -70,8 +71,9 @@ public:
 
   void add_option(const std::string&);
   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
   {
@@ -100,6 +102,11 @@ public:
     _use_valgrind= arg;
   }
 
+  bool check() const;
+
+  bool slurp();
+  void murder();
+
   void use_gdb(bool arg= true)
   {
     _use_gdb= arg;
@@ -112,6 +119,11 @@ public:
     return  _gdb_filename;
   }
 
+  pid_t pid() const
+  {
+    return _pid;
+  }
+
 private:
   void create_argv(const char *args[]);
   void delete_argv();