#include <config.h>
#include "support/debug.h"
-#include "support/environment.h"
#include "support/filetools.h"
#include "support/lstrings.h"
#include "support/qstring_helpers.h"
int Systemcall::startscript(Starttype how, string const & what,
std::string const & path, bool /*process_events*/)
{
- string command;
- string const texinputs = os::latex_path_list(
- replaceCurdirPath(path, lyxrc.texinputs_prefix));
- string const sep = string(1, os::path_separator(os::TEXENGINE));
- string const env = getEnv("TEXINPUTS");
-
- switch (os::shell()) {
- case os::UNIX:
- command = path.empty() || lyxrc.texinputs_prefix.empty() ? what
- : "env TEXINPUTS='." + sep + texinputs
- + sep + env + "' " + what;
- break;
- case os::CMD_EXE:
- command = path.empty() || lyxrc.texinputs_prefix.empty() ? what
- : "set TEXINPUTS=." + sep + texinputs
- + sep + env + " & " + what;
- break;
- }
+ string const python_call = "python -tt";
+ string command = to_filesystem8bit(from_utf8(latexEnvCmdPrefix(path)));
+
+ if (prefixIs(what, python_call))
+ command += os::python() + what.substr(python_call.length());
+ else
+ command += what;
if (how == DontWait) {
switch (os::shell()) {
command = "start /min " + command;
break;
}
- }
+ } else if (os::shell() == os::CMD_EXE)
+ command = subst(command, "cmd /d /c ", "");
return ::system(command.c_str());
}
bool in_single_quote = false;
bool in_double_quote = false;
bool escaped = false;
+ string const python_call = "python -tt";
string cmd;
+ int start = 0;
- for (size_t i = 0; i < inputcmd.length(); ++i) {
+ if (prefixIs(inputcmd, python_call)) {
+ cmd = os::python();
+ start = python_call.length();
+ }
+
+ for (size_t i = start; i < inputcmd.length(); ++i) {
char c = inputcmd[i];
if (c == '\'') {
if (in_double_quote || escaped) {
string const & path, bool process_events)
{
string outfile;
- QString cmd = toqstr(parsecmd(what, outfile));
+ QString cmd = QString::fromLocal8Bit(parsecmd(what, outfile).c_str());
SystemcallPrivate d(outfile);
if (!out_file_.empty()) {
// Check whether we have to simply throw away the output.
if (out_file_ != os::nulldev())
- process_->setStandardOutputFile(toqstr(out_file_));
+ process_->setStandardOutputFile(QString::fromLocal8Bit(out_file_.c_str()));
}
connect(process_, SIGNAL(readyReadStandardOutput()), SLOT(stdOut()));
}
-
void SystemcallPrivate::startProcess(QString const & cmd, string const & path)
{
cmd_ = cmd;
if (process_) {
- if (!path.empty() && !lyxrc.texinputs_prefix.empty()) {
- QString const texinputs = toqstr(os::latex_path_list(
- replaceCurdirPath(path, lyxrc.texinputs_prefix)));
- QChar const sep = os::path_separator(os::TEXENGINE);
- QString const prefix = QLatin1String("TEXINPUTS=.")
- + sep + texinputs + sep;
- QStringList env = QProcess::systemEnvironment();
- if (env.filter("TEXINPUTS=").isEmpty())
- env << prefix;
- else
- env.replaceInStrings(QRegExp("^TEXINPUTS=(.*)"),
- prefix + "\\1");
- process_->setEnvironment(env);
- }
state = SystemcallPrivate::Starting;
- process_->start(cmd_);
+ process_->start(toqstr(latexEnvCmdPrefix(path)) + cmd_);
}
}