]> git.lyx.org Git - lyx.git/commitdiff
Improved symlink creation for Mac OS for first LyX start
authorStephan Witt <switt@lyx.org>
Mon, 20 Jul 2015 23:06:36 +0000 (01:06 +0200)
committerStephan Witt <switt@lyx.org>
Wed, 22 Jul 2015 04:27:21 +0000 (06:27 +0200)
src/LyX.cpp

index b4c02168c8ed36f1d539d1030863eb6398245058..a1fdac914007501829a8820767cf3bc781c59d30 100644 (file)
@@ -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());
        }