summaryrefslogtreecommitdiffstats
path: root/src/subprocess.h
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2014-01-30 05:57:58 (GMT)
committerPeter Collingbourne <peter@pcc.me.uk>2014-02-03 05:20:01 (GMT)
commit2832613dc7c1a4a8ff3b9df729954715762a8381 (patch)
tree7f4be6edb18f26d73af002f977c2f4a901dfe2ea /src/subprocess.h
parent84986af6fdeae3f649f2bf884b20f644bc370e48 (diff)
downloadNinja-2832613dc7c1a4a8ff3b9df729954715762a8381.zip
Ninja-2832613dc7c1a4a8ff3b9df729954715762a8381.tar.gz
Ninja-2832613dc7c1a4a8ff3b9df729954715762a8381.tar.bz2
Introduce the "console" pool
This is a pre-defined pool with a depth of 1. It has the special property that any task in the pool has direct access to the console. This can be useful for interactive tasks or long-running tasks which produce status updates on the console (such as test suites).
Diffstat (limited to 'src/subprocess.h')
-rw-r--r--src/subprocess.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/subprocess.h b/src/subprocess.h
index 4c1629c..6ea6f62 100644
--- a/src/subprocess.h
+++ b/src/subprocess.h
@@ -44,13 +44,14 @@ struct Subprocess {
const string& GetOutput() const;
private:
- Subprocess();
bool Start(struct SubprocessSet* set, const string& command);
void OnPipeReady();
string buf_;
#ifdef _WIN32
+ Subprocess();
+
/// Set up pipe_ as the parent-side pipe of the subprocess; return the
/// other end of the pipe, usable in the child process.
HANDLE SetupPipe(HANDLE ioport);
@@ -61,9 +62,12 @@ struct Subprocess {
char overlapped_buf_[4 << 10];
bool is_reading_;
#else
+ Subprocess(bool use_console);
+
int fd_;
pid_t pid_;
#endif
+ bool use_console_;
friend struct SubprocessSet;
};
@@ -75,7 +79,7 @@ struct SubprocessSet {
SubprocessSet();
~SubprocessSet();
- Subprocess* Add(const string& command);
+ Subprocess* Add(const string& command, bool use_console = false);
bool DoWork();
Subprocess* NextFinished();
void Clear();