X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2FSystemcallPrivate.h;h=6ab479f73c329fd5b68a786b9cd6a608c478e9a2;hb=62af7ee772f16f154225d2d0b65d77f4376b6001;hp=ee8aeb164cb9f964632b75ce970c70d74882ff04;hpb=0eedbdee03dd697a5f6bccd0438fd3947da740b0;p=lyx.git diff --git a/src/support/SystemcallPrivate.h b/src/support/SystemcallPrivate.h index ee8aeb164c..6ab479f73c 100644 --- a/src/support/SystemcallPrivate.h +++ b/src/support/SystemcallPrivate.h @@ -24,7 +24,7 @@ class Systemcall; /** * Outputs to the console terminal the line buffered standard output and - * error of a spawned process when there is a controlling terminal and + * error of a spawned process when there is a controlling terminal and * stdout/stderr have not been redirected. */ class SystemcallPrivate : public QObject @@ -32,29 +32,35 @@ class SystemcallPrivate : public QObject Q_OBJECT public: - SystemcallPrivate(std::string const & outfile); + SystemcallPrivate(std::string const & infile, std::string const & outfile, + std::string const & errfile); ~SystemcallPrivate(); enum State { Starting, Running, Finished, - Error + Error, + Killed }; State state; bool waitWhile(State, bool processEvents, int timeout = -1); - void startProcess(QString const & cmd, std::string const & path); - + void startProcess(QString const & cmd, std::string const & path, + std::string const & lpath, bool detach); + int exitCode(); QString errorMessage() const; QString exitStatusMessage() const; QProcess* releaseProcess(); - + static void killProcess(QProcess * p); + // when true, kill any running script ASAP + static bool kill_script; + public Q_SLOTS: void stdOut(); @@ -73,9 +79,11 @@ private: /// Index to the standard error buffer. size_t err_index_; /// + std::string in_file_; + /// std::string out_file_; /// - std::string texinputs_; + std::string err_file_; /// Size of buffers. static size_t const buffer_size_ = 200; @@ -89,8 +97,11 @@ private: void waitAndProcessEvents(); void processEvents(); - void killProcess(); + void killProcess(); + /// returns false if we killed the process + /// actually returns Systemcall::ReturnValue + bool waitAndCheck(); }; } // namespace support