Fix #7715 (Lyx 2.0.0 doesn't work with Mathematica 8: call to 'math' problem?)

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_2_0_X@39514 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Enrico Forestieri 2011-08-23 18:51:41 +00:00
parent 40979265ff
commit ce74af9ec0
2 changed files with 24 additions and 4 deletions

View File

@ -851,6 +851,16 @@ cmd_ret const runCommand(string const & cmd)
SECURITY_ATTRIBUTES security;
HANDLE in, out;
FILE * inf = 0;
bool err2out = false;
string command;
string const infile = trim(split(cmd, command, '<'), " \"");
command = rtrim(command);
if (suffixIs(command, "2>&1")) {
command = rtrim(command, "2>&1");
err2out = true;
}
string const cmdarg = "/c " + command;
string const comspec = getEnv("COMSPEC");
security.nLength = sizeof(SECURITY_ATTRIBUTES);
security.bInheritHandle = TRUE;
@ -863,12 +873,18 @@ cmd_ret const runCommand(string const & cmd)
startup.cb = sizeof(STARTUPINFO);
startup.dwFlags = STARTF_USESTDHANDLES;
startup.hStdError = GetStdHandle(STD_ERROR_HANDLE);
startup.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
startup.hStdError = err2out ? out : GetStdHandle(STD_ERROR_HANDLE);
startup.hStdInput = infile.empty()
? GetStdHandle(STD_INPUT_HANDLE)
: CreateFile(infile.c_str(), GENERIC_READ,
FILE_SHARE_READ, &security, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
startup.hStdOutput = out;
if (CreateProcess(0, (LPTSTR)cmd.c_str(), &security, &security,
TRUE, CREATE_NO_WINDOW, 0, 0, &startup, &process)) {
if (startup.hStdInput != INVALID_HANDLE_VALUE &&
CreateProcess(comspec.c_str(), (LPTSTR)cmdarg.c_str(),
&security, &security, TRUE, CREATE_NO_WINDOW,
0, 0, &startup, &process)) {
CloseHandle(process.hThread);
fno = _open_osfhandle((long)in, _O_RDONLY);
@ -899,6 +915,8 @@ cmd_ret const runCommand(string const & cmd)
#if defined (_WIN32)
WaitForSingleObject(process.hProcess, INFINITE);
if (!infile.empty())
CloseHandle(startup.hStdInput);
CloseHandle(process.hProcess);
int const pret = fclose(inf);
#elif defined (HAVE_PCLOSE)

View File

@ -252,6 +252,8 @@ What's new
- With aspell backend split words on hard hyphens to check parts separately
because hyphen is not allowed to be part of a word (bug 7660).
- On Windows, fix call to Computer Algebra System programs (bug 7715).
* ADVANCED FIND AND REPLACE