// (Claus Hentschel) Check if popen was successful ;-)
if (!inf) {
lyxerr << "RunCommand:: could not start child process" << endl;
- return make_pair(-1, string());
+ return { false, string() };
}
- string ret;
+ string result;
int c = fgetc(inf);
while (c != EOF) {
- ret += static_cast<char>(c);
+ result += static_cast<char>(c);
c = fgetc(inf);
}
#if defined (_WIN32)
WaitForSingleObject(process.hProcess, INFINITE);
DWORD pret;
- if (!GetExitCodeProcess(process.hProcess, &pret))
- pret = -1;
+ BOOL success = GetExitCodeProcess(process.hProcess, &pret);
+ bool valid = (pret == 0) && success;
if (!infile.empty())
CloseHandle(startup.hStdInput);
CloseHandle(process.hProcess);
if (fclose(inf) != 0)
- pret = -1;
+ valid = false;
#elif defined (HAVE_PCLOSE)
int const pret = pclose(inf);
+ bool const valid = (pret != -1);
#elif defined (HAVE__PCLOSE)
int const pret = _pclose(inf);
+ bool const valid = (pret != -1);
#else
#error No pclose() function.
#endif
- if (pret == -1)
+ if (!valid)
perror("RunCommand:: could not terminate child process");
- return make_pair(pret, ret);
+ return { valid, result };
}
cmd_ret const c = runCommand(kpsecmd);
- LYXERR(Debug::LATEX, "kpse status = " << c.first << '\n'
- << "kpse result = `" << rtrim(c.second, "\n\r") << '\'');
- if (c.first != -1)
- return FileName(rtrim(to_utf8(from_filesystem8bit(c.second)), "\n\r"));
+ LYXERR(Debug::LATEX, "kpse status = " << c.valid << '\n'
+ << "kpse result = `" << rtrim(c.result, "\n\r") << '\'');
+ if (c.valid)
+ return FileName(rtrim(to_utf8(from_filesystem8bit(c.result)), "\n\r"));
else
return FileName();
}
LYXERR(Debug::FILES, "Running `" << command_str << '\'');
cmd_ret const ret = runCommand(command_str);
- if (ret.first != 0) {
+ if (!ret.valid) {
LYXERR0("Could not run file conversion script prefs2prefs.py.");
return false;
}
smatch sm;
try {
static regex const python_reg("\\((\\d*), (\\d*)\\)");
- if (out.first < 0 || !regex_match(out.second, sm, python_reg))
+ if (!out.valid || !regex_match(out.result, sm, python_reg))
return string();
} catch(regex_error const & /*e*/) {
LYXERR0("Regex error! This should not happen.");
return string();
if (verbose)
- lyxerr << "Found Python " << out.second << "\n";
+ lyxerr << "Found Python " << out.result << "\n";
// Add the -tt switch so that mixed tab/whitespace
// indentation is an error
return binary + " -tt";
// to the outer split which sets cygdrive with its
// contents until the first blank, discarding the
// unneeded return value.
- if (p.first != -1 && prefixIs(p.second, "Prefix"))
- split(split(p.second, '\n'), cygdrive, ' ');
+ if (p.valid && prefixIs(p.result, "Prefix"))
+ split(split(p.result, '\n'), cygdrive, ' ');
}
}