commit f7a8c5b4ebd93f29ea8085e1199c354ab289d559
Author: Kornel Benko <[email protected]>
Date: Sun Dec 13 12:25:32 2015 +0100
\origin handling. Use realPath() intead of absFileName()
This change avoids misinterpreting paths containing symbolic parts.
Without this, lyx may not find its own sysdir.
diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index 029e5b5..ee9f535 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -1016,10 +1016,15 @@ void BufferParams::writeFile(ostream & os, Buffer const
* buf) const
// Prints out the buffer info into the .lyx file given by file
// the document directory
- string filepath = buf->filePath();
- string const sysdir = package().system_support().absFileName();
- if (prefixIs(filepath, sysdir))
+ // use realPath() instead of absFileName() for comparing
+ // 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, "//", "/");
+ }
else if (!lyxrc.save_origin)
filepath = "unavailable";
os << "\\origin " << quoteIfNeeded(filepath) << '\n';