X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fexternaltask.h;h=1b330ff745afd235d31638c87e63ff23adf0bae3;hb=1d687970cc35e54c3335f4aa2fdef23424fe0a06;hp=0bd108e9a3cac68e46ca80e6f43ac434b752a70c;hpb=64cd148dcd762ea368d9a552e982fdff83781ef2;p=builder.git diff --git a/source/externaltask.h b/source/externaltask.h index 0bd108e..1b330ff 100644 --- a/source/externaltask.h +++ b/source/externaltask.h @@ -4,22 +4,42 @@ #include #include #include +#include #include "task.h" class ExternalTask: public Task { +public: + enum Destination + { + PASSTHROUGH, + CAPTURE, + IGNORE + }; + + typedef std::vector Arguments; + private: - std::vector argv; + Arguments argv; Msp::FS::Path work_dir; int pid; int exit_code; + Destination stdout_dest; + Destination stderr_dest; + Msp::IO::Pipe *capture_pipe; + std::string output; public: - ExternalTask(const std::vector &, const Msp::FS::Path &); + ExternalTask(const Arguments &, const Msp::FS::Path & = Msp::FS::Path()); + virtual ~ExternalTask(); virtual std::string get_command() const; virtual void start(); virtual Status check(); + + void set_stdout(Destination); + void set_stderr(Destination); + const std::string &get_output() const { return output; } }; #endif