class ExternalTask: public Task
{
public:
- enum Destination
+ enum StreamAction
{
PASSTHROUGH, //< Do not touch the stream
CAPTURE, //< Capture the stream
+ REDIRECT, //< Redirect the stream to/from a file
IGNORE //< Redirect the stream to oblivion
};
Msp::FS::Path work_dir;
Msp::Process *process;
int exit_code;
- Destination stdout_dest;
- Destination stderr_dest;
+ Msp::FS::Path stdin_file;
+ StreamAction stdout_action;
+ Msp::FS::Path stdout_file;
+ StreamAction stderr_action;
Msp::IO::Pipe *capture_pipe;
std::string output;
Status do_wait(bool);
public:
+ /// Redirect stdin from a file. Has no effect after the task is started.
+ void set_stdin(const Msp::FS::Path &);
+
/// Sets destination for stdout. Has no effect after the task is started.
- void set_stdout(Destination);
+ void set_stdout(StreamAction);
+
+ /// Redirect stdout to a file. Has no effect after the task is started.
+ void set_stdout(const Msp::FS::Path &);
/// Sets destination for stderr. Has no effect after the task is started.
- void set_stderr(Destination);
+ void set_stderr(StreamAction);
/** Returns captured output, if any. This may be called while the task is
still running, but it will always return all output. */