// $[A-Za-z_][A-Za-z_0-9]*
static string const envvar = "[$]([A-Za-z_][A-Za-z_0-9]*)";
- static regex const envvar_br_re("(.*)" + envvar_br + "(.*)");
- static regex const envvar_re("(.*)" + envvar + "(.*)");
- string result = path;
- while (1) {
- smatch what;
- if (!regex_match(result, what, envvar_br_re)) {
- if (!regex_match(result, what, envvar_re))
- break;
+ // Coverity thinks that the regex constructor can return an
+ // exception. We know that it is not true since our regex are
+ // hardcoded, but we have to protect against that nevertheless.
+ try {
+ static regex const envvar_br_re("(.*)" + envvar_br + "(.*)");
+ static regex const envvar_re("(.*)" + envvar + "(.*)");
+ string result = path;
+ while (1) {
+ smatch what;
+ if (!regex_match(result, what, envvar_br_re)) {
+ if (!regex_match(result, what, envvar_re))
+ break;
+ }
+ string env_var = getEnv(what.str(2));
+ result = what.str(1) + env_var + what.str(3);
}
- string env_var = getEnv(what.str(2));
- result = what.str(1) + env_var + what.str(3);
+ return result;
+ } catch (exception const & e) {
+ LYXERR0("Something is very wrong: " << e.what());
+ return path;
}
- return result;
}
}
-FileName const findtexfile(string const & fil, string const & /*format*/)
+FileName const findtexfile(string const & fil, string const & /*format*/,
+ bool const onlykpse)
{
/* There is no problem to extend this function too use other
methods to look for files. It could be setup to look
// If the file can be found directly, we just return a
// absolute path version of it.
- FileName const absfile(makeAbsPath(fil));
- if (absfile.exists())
- return absfile;
+ if (!onlykpse) {
+ FileName const absfile(makeAbsPath(fil));
+ if (absfile.exists())
+ return absfile;
+ }
// Now we try to find it using kpsewhich.
// It seems from the kpsewhich manual page that it is safe to use