aboutsummaryrefslogtreecommitdiff
path: root/libbutl/process.ixx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-12-14 14:24:38 +0200
committerKaren Arutyunov <karen@codesynthesis.com>2017-12-15 13:38:33 +0300
commit53b4f58c78e21cbc442891c2ce2a2b99a32e47bc (patch)
treef2b892650367a44332d7a169ede8aa9e60e6a3c8 /libbutl/process.ixx
parentceb8f4abba2cfc7ac51385fa59693c641151c8d2 (diff)
Add process::pipe struct, extend process API
Diffstat (limited to 'libbutl/process.ixx')
-rw-r--r--libbutl/process.ixx24
1 files changed, 24 insertions, 0 deletions
diff --git a/libbutl/process.ixx b/libbutl/process.ixx
index fb076cf..a0e2de6 100644
--- a/libbutl/process.ixx
+++ b/libbutl/process.ixx
@@ -137,6 +137,19 @@ namespace butl
}
inline process::
+ process (const process_path& pp, const char* args[],
+ int in, int out, int err,
+ const char* cwd,
+ const char* const* envvars)
+ : process (pp,
+ args,
+ pipe (in, -1), pipe (-1, out), pipe (-1, err),
+ cwd,
+ envvars)
+ {
+ }
+
+ inline process::
process (const char* args[],
int in, int out, int err,
const char* cwd,
@@ -144,6 +157,17 @@ namespace butl
: process (path_search (args[0]), args, in, out, err, cwd, envvars) {}
inline process::
+ process (const process_path& pp, const char* args[],
+ process& in, int out, int err,
+ const char* cwd,
+ const char* const* envvars)
+ : process (pp, args, in.in_ofd.get (), out, err, cwd, envvars)
+ {
+ assert (in.in_ofd.get () != -1); // Should be a pipe.
+ in.in_ofd.reset (); // Close it on our side.
+ }
+
+ inline process::
process (const char* args[],
process& in, int out, int err,
const char* cwd,