// Reuse of instance
#ifndef USE_QPROCESS
int Systemcall::startscript(Starttype how, string const & what,
- std::string const & path, bool /*process_events*/)
+ string const & path, string const & lpath,
+ bool /*process_events*/)
{
- string command = to_filesystem8bit(from_utf8(latexEnvCmdPrefix(path)))
+ string command =
+ to_filesystem8bit(from_utf8(latexEnvCmdPrefix(path, lpath)))
+ commandPrep(what);
if (how == DontWait) {
int Systemcall::startscript(Starttype how, string const & what,
- string const & path, bool process_events)
+ string const & path, string const & lpath,
+ bool process_events)
{
string const what_ss = commandPrep(what);
LYXERR(Debug::INFO,"Running: " << what_ss);
// is started with QProcess::startDetached, a console window is shown every
// time a viewer is started. To avoid this, we fall back on Windows to the
// original implementation that creates a QProcess object.
- d.startProcess(cmd, path, false);
+ d.startProcess(cmd, path, lpath, false);
if (!d.waitWhile(SystemcallPrivate::Starting, process_events, -1)) {
LYXERR0("Systemcall: '" << cmd << "' did not start!");
LYXERR0("error " << d.errorMessage());
return 0;
}
#else
- d.startProcess(cmd, path, how == DontWait);
+ d.startProcess(cmd, path, lpath, how == DontWait);
if (how == DontWait && d.state == SystemcallPrivate::Running)
return 0;
connect(process_, SIGNAL(readyReadStandardOutput()), SLOT(stdOut()));
connect(process_, SIGNAL(readyReadStandardError()), SLOT(stdErr()));
+#if QT_VERSION >= 0x050600
+ connect(process_, SIGNAL(errorOccurred(QProcess::ProcessError)), SLOT(processError(QProcess::ProcessError)));
+#else
connect(process_, SIGNAL(error(QProcess::ProcessError)), SLOT(processError(QProcess::ProcessError)));
+#endif
connect(process_, SIGNAL(started()), this, SLOT(processStarted()));
connect(process_, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(processFinished(int, QProcess::ExitStatus)));
}
-void SystemcallPrivate::startProcess(QString const & cmd, string const & path, bool detached)
+void SystemcallPrivate::startProcess(QString const & cmd, string const & path,
+ string const & lpath, bool detached)
{
cmd_ = cmd;
if (detached) {
state = SystemcallPrivate::Running;
- if (!QProcess::startDetached(toqstr(latexEnvCmdPrefix(path)) + cmd_)) {
+ if (!QProcess::startDetached(toqstr(latexEnvCmdPrefix(path, lpath)) + cmd_)) {
state = SystemcallPrivate::Error;
return;
}
delete released;
} else if (process_) {
state = SystemcallPrivate::Starting;
- process_->start(toqstr(latexEnvCmdPrefix(path)) + cmd_);
+ process_->start(toqstr(latexEnvCmdPrefix(path, lpath)) + cmd_);
}
}
int SystemcallPrivate::exitCode()
{
- if (!process_)
- return -1;
-
// From Qt's documentation, in regards to QProcess::exitCode(),
// "This value is not valid unless exitStatus() returns NormalExit"
- if (process_->exitStatus() != QProcess::NormalExit)
+ if (!process_ || process_->exitStatus() != QProcess::NormalExit)
return -1;
+
return process_->exitCode();
}