From: Kornel Benko Date: Sun, 13 Dec 2015 11:25:32 +0000 (+0100) Subject: \origin handling. Use realPath() intead of absFileName() X-Git-Tag: 2.2.0beta1~392 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=f7a8c5b4ebd93f29ea8085e1199c354ab289d559;p=features.git \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 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';