commit bdc997726438fb63a671e5f2569e0f57d5ae0c1e
Author: Stephan Witt <[email protected]>
Date:   Tue Jul 21 01:06:36 2015 +0200

    Improved symlink creation for Mac OS for first LyX start

diff --git a/src/LyX.cpp b/src/LyX.cpp
index b4c0216..a1fdac9 100644
--- a/src/LyX.cpp
+++ b/src/LyX.cpp
@@ -783,33 +783,35 @@ void cleanDuplicateEnvVars()
 static void initTemplatePath()
 {
        FileName const package_template_path =
-               FileName(addPath(package().system_support().absFileName(), 
"templates"));
+               FileName(addName(package().system_support().absFileName(), 
"templates"));
 
        if (lyxrc.template_path.empty()) {
                lyxrc.template_path = package_template_path.absFileName();
        }
 #if defined (USE_MACOSX_PACKAGING)
        FileName const user_template_path =
-               FileName(addPath(package().user_support().absFileName(), 
"templates"));
+               FileName(addName(package().user_support().absFileName(), 
"templates"));
 
        if (package_template_path != FileName(lyxrc.template_path) &&
                user_template_path != FileName(lyxrc.template_path))
        {
                return;
        }
-       /// addPath cannot be used here.
-       /// The path with trailing slash doesn't work as symlink name.
        FileName const user_template_link =
-               FileName(user_template_path.absFileName() + "SystemTemplates");
-       if (user_template_link.isSymLink()) {
+               
FileName(addName(user_template_path.absFileName(),"SystemTemplates"));
+       if (user_template_link.isSymLink() && !equivalent(user_template_link, 
package_template_path)) {
                user_template_link.removeFile();
        }
        if (!user_template_link.exists()) {
                if (!package_template_path.link(user_template_link)) {
-                       LYXERR(Debug::INIT, "Cannot create symlink " + 
user_template_link.absFileName());
-                       lyxrc.template_path = 
package_template_path.absFileName();
+                       FileName const user_support = package().user_support();
+                       if (user_support.exists() && 
user_support.isDirectory()) {
+                               LYXERR(Debug::INIT, "Cannot create symlink " + 
user_template_link.absFileName());
+                               lyxrc.template_path = 
package_template_path.absFileName();
+                       }
                        return;
                }
+               LYXERR(Debug::INIT, "Symlink \"" << 
user_template_link.absFileName() << "\" created.");
        }
        lyxrc.template_path = user_template_path.absFileName();
 #endif
@@ -883,6 +885,8 @@ bool LyX::init()
 
                if (queryUserLyXDir(package().explicit_user_support())) {
                        package().reconfigureUserLyXDir("");
+                       // Now the user directory is present on first start.
+                       initTemplatePath();
                }
                fileUnlock(fd, lock_file.c_str());
        }

Reply via email to