Consider sub-subfiles on log file parsing.

These are listed as (subfile.ext (sub-subfile.ext))

Fixes: #11112
(cherry picked from commit 1e1800a21a)
This commit is contained in:
Juergen Spitzmueller 2018-04-14 14:33:21 +02:00 committed by Richard Heck
parent dc2c1b943d
commit e4a3527fa9
2 changed files with 15 additions and 4 deletions

View File

@ -1081,8 +1081,8 @@ bool completeFilename(string const & ff, DepTable & head)
}
int iterateLine(string const & token, regex const & reg, string const & closing,
int fragment_pos, DepTable & head)
int iterateLine(string const & token, regex const & reg, string const & opening,
string const & closing, int fragment_pos, DepTable & head)
{
smatch what;
string::const_iterator first = token.begin();
@ -1099,6 +1099,15 @@ int iterateLine(string const & token, regex const & reg, string const & closing,
// since we had a closing bracket,
// do not investigate further
fragment = false;
} else if (what.str(2) == opening) {
// if we have another opening bracket,
// we might have a nested file chain
// as is (file.ext (subfile.ext))
fragment = !handleFoundFile(rtrim(what.str(1)), head);
// decrease first position by one in order to
// consider the opening delimiter on next iteration
if (first > token.begin())
--first;
} else
// if we have no closing bracket,
// try to handle as file nevertheless
@ -1282,7 +1291,7 @@ void LaTeX::deplog(DepTable & head)
if (regex_match(token, sub, reg5)) {
// search for strings in <...>
static regex const reg5_1("<([^>]+)(.)");
fragment_pos = iterateLine(token, reg5_1, ">",
fragment_pos = iterateLine(token, reg5_1, "<", ">",
fragment_pos, head);
fragment = (fragment_pos != -1);
}
@ -1295,7 +1304,7 @@ void LaTeX::deplog(DepTable & head)
if (regex_match(token, sub, reg6)) {
// search for strings in (...)
static regex const reg6_1("\\(([^()]+)(.)");
fragment_pos = iterateLine(token, reg6_1, ")",
fragment_pos = iterateLine(token, reg6_1, "(", ")",
fragment_pos, head);
fragment = (fragment_pos != -1);
}

View File

@ -130,6 +130,8 @@ What's new
- Load hyperref with a suitable driver (bug 6418).
- Recompile grandchildren when they have updated (bug 11112).
* LYX2LYX