Improve directory name juggling

The old code did not ensure that the path was only broken into parts at
directory separators. The new code ensures it.
This commit is contained in:
Georg Baum 2015-12-18 20:20:04 +01:00 committed by Günter Milde
parent 6b58b511cd
commit 5e3165e9cc

View File

@ -1020,11 +1020,10 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
// so we can catch also eventually used symbolic parts of the path.
string filepath = buf->fileName().onlyPath().realPath();
string const sysdir = package().system_support().realPath();
if (prefixIs(filepath, sysdir)) {
filepath.replace(0, sysdir.length(), "/systemlyxdir/");
// Remove eventually added superfluous "/"
filepath = subst(filepath, "//", "/");
}
string const relpath =
to_utf8(makeRelPath(from_utf8(filepath), from_utf8(sysdir)));
if (!prefixIs(relpath, "../") && !FileName::isAbsolute(relpath))
filepath = addPath("/systemlyxdir", relpath);
else if (!lyxrc.save_origin)
filepath = "unavailable";
os << "\\origin " << quoteIfNeeded(filepath) << '\n';