From f7a8c5b4ebd93f29ea8085e1199c354ab289d559 Mon Sep 17 00:00:00 2001 From: Kornel Benko Date: Sun, 13 Dec 2015 12:25:32 +0100 Subject: [PATCH] \origin handling. Use realPath() intead of absFileName() This change avoids misinterpreting paths containing symbolic parts. Without this, lyx may not find its own sysdir. --- src/BufferParams.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 029e5b524c..ee9f535f99 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'; -- 2.39.2