* src/LaTeX.C (deplog): fix the regex to parse filenames in the log file

(fixes bug 3224)
*src/support/filename.C: limit asserts to windows platform
	(fixes bug 3132)

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17163 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jürgen Spitzmüller 2007-02-13 17:31:43 +00:00
parent 5b79207f3d
commit 65b1b08a5c
2 changed files with 12 additions and 4 deletions

View File

@ -822,9 +822,11 @@ void LaTeX::deplog(DepTable & head)
// Ok, the scanning of files here is not sufficient. // Ok, the scanning of files here is not sufficient.
// Sometimes files are named by "File: xxx" only // Sometimes files are named by "File: xxx" only
// So I think we should use some regexps to find files instead. // So I think we should use some regexps to find files instead.
// "(\([^ ]+\)" should match the "(file " variant, note // "\(([^ ()]+\.+[^ ()]+)" should match the "(file.ext " variant,
// that we can have several of these on one line. // note that we can have several of these on one line.
// "File: \([^ ]+\)" should match the "File: file" variant // "File: ([^\.]+\.+[^ ]+).*" should match the "File: file.ext " variant.
// FIXME: sometimes, LaTeX inserts linebreaks while outputting
// file names. This case is not handled correctly (bug 1027).
string token; string token;
getline(ifs, token); getline(ifs, token);
@ -844,7 +846,9 @@ void LaTeX::deplog(DepTable & head)
token = to_utf8(from_filesystem8bit(token)); token = to_utf8(from_filesystem8bit(token));
if (regex_match(token, sub, reg1)) { if (regex_match(token, sub, reg1)) {
static regex reg1_1("\\(([^()]+)"); // search for strings in (...) that must not contain
// a blank, but must contain a dot
static regex reg1_1("\\(([^()]+\\.+[^ ()]+)");
smatch what; smatch what;
string::const_iterator first = token.begin(); string::const_iterator first = token.begin();
string::const_iterator end = token.end(); string::const_iterator end = token.end();

View File

@ -45,7 +45,9 @@ FileName::FileName(string const & abs_filename)
: name_(abs_filename) : name_(abs_filename)
{ {
BOOST_ASSERT(empty() || absolutePath(name_)); BOOST_ASSERT(empty() || absolutePath(name_));
#if defined(_WIN32)
BOOST_ASSERT(!contains(name_, '\\')); BOOST_ASSERT(!contains(name_, '\\'));
#endif
} }
@ -53,7 +55,9 @@ void FileName::set(string const & name)
{ {
name_ = name; name_ = name;
BOOST_ASSERT(absolutePath(name_)); BOOST_ASSERT(absolutePath(name_));
#if defined(_WIN32)
BOOST_ASSERT(!contains(name_, '\\')); BOOST_ASSERT(!contains(name_, '\\'));
#endif
} }