X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fexternaltask.h;h=cb8464beab873ef24146b49a5ab02bd6a9aaa21c;hb=8ee4fd693c8d15265f0c145221737a322f89618b;hp=d997f9a7b4891ad473aea0d2cfdffb8bcd53bef5;hpb=06678c3bb61404c483e4b9c39eaa7e7fb3f40c62;p=builder.git diff --git a/source/externaltask.h b/source/externaltask.h index d997f9a..cb8464b 100644 --- a/source/externaltask.h +++ b/source/externaltask.h @@ -17,9 +17,9 @@ class ExternalTask: public Task public: enum Destination { - PASSTHROUGH, - CAPTURE, - IGNORE + PASSTHROUGH, //< Do not touch the stream + CAPTURE, //< Capture the stream + IGNORE //< Redirect the stream to oblivion }; typedef std::vector Arguments; @@ -45,9 +45,19 @@ public: virtual std::string get_command() const; virtual void start(); virtual Status check(); + virtual Status wait(); +private: + Status do_wait(bool); +public: + /// Sets destination for stdout. Has no effect after the task is started. void set_stdout(Destination); + + /// Sets destination for stderr. Has no effect after the task is started. void set_stderr(Destination); + + /** Returns captured output, if any. This may be called while the task is + still running, but it will always return all output. */ const std::string &get_output() const { return output; } /** Executes a command and captures its output. Stderr is ignored, but if