* Licence details can be found in the file COPYING.
*
* \author Asger Alstrup
- * \author Peter Kümmel
*
* Interface cleaned up by
* \author Angus Leeming
#ifndef SYSTEMCALL_H
#define SYSTEMCALL_H
-#include <string>
+#include "strfwd.h"
namespace lyx {
namespace support {
-class ProgressInterface;
-
/**
* An instance of Class Systemcall represents a single child process.
*
- * Class Systemcall uses SystemcallPrivate to launch the child process.
+ * Class Systemcall uses system() to launch the child process.
* The user can choose to wait or not wait for the process to complete, but no
* callback is invoked upon completion of the child.
*
public:
/// whether to wait for completion
enum Starttype {
- Wait, //< wait for completion before returning from startscript()
- DontWait //< don't wait for completion
+ Wait, //< wait for completion before returning from startscript()
+ WaitLoop, //< wait, but check occasionally for cancellation
+ DontWait //< don't wait for completion
+ };
+
+ // enum values chosen hopefully not to conflict with ordinary return values
+ enum ReturnValue {
+ OK = 0,
+ NOSTART = 1001,
+ ERROR = 2001,
+ TIMEOUT = 4001,
+ KILLED = 9001
};
+
+ // Kill the process which is running at time being
+ static void killscript();
+
/** Start child process.
* The string "what" contains a commandline with arguments separated
- * by spaces.
+ * by spaces and encoded in the filesystem encoding. "$$s" will be
+ * replaced accordingly by commandPrep(). The string "path" contains
+ * the path to be prepended to the TEXINPUTS environment variable
+ * encoded in utf-8. Similarly for the string "lpath" that, if not
+ * empty, specifies an additional directory to be added to TEXINPUTS
+ * but after "path". Unset "process_events" in case UI should be
+ * blocked while processing the external command.
*/
- int startscript(Starttype how, std::string const & what);
-
- static void registerProgressInterface(ProgressInterface*);
- static ProgressInterface* progress();
+ int startscript(Starttype how, std::string const & what,
+ std::string const & path = empty_string(),
+ std::string const & lpath = empty_string(),
+ bool process_events = false);
};
} // namespace support