]> git.lyx.org Git - lyx.git/blobdiff - src/support/Package.cpp
Fix samba related crashes
[lyx.git] / src / support / Package.cpp
index b65bd1fd235226e023221ade58dae7647b4b7a67..a2e8b17ebfcb72ccbc9bdf350378c0f486749f49 100644 (file)
@@ -116,6 +116,10 @@ Package::Package(string const & command_line_arg0,
        FileName const abs_binary = abs_path_from_binary_name(command_line_arg0);
        binary_dir_ = FileName(onlyPath(abs_binary.absFileName()));
 
+       // the LyX package directory
+       lyx_dir_ = FileName(addPath(binary_dir_.absFileName(), "../"));
+       lyx_dir_ = FileName(lyx_dir_.realPath());
+
        // Is LyX being run in-place from the build tree?
        buildDirs(abs_binary, top_build_dir_location,
                build_support_dir_, system_support_dir_);
@@ -125,6 +129,24 @@ Package::Package(string const & command_line_arg0,
                        get_system_support_dir(abs_binary,
                                               command_line_system_support_dir);
 
+       // The LyX executable is one level above binary_dir_ if we are running
+       // tex2lyx in place. Otherwise it is in binary_dir_.
+       string abs_lyx_dir;
+       if (build_support_dir_.empty() ||
+           top_build_dir_location == top_build_dir_is_one_level_up)
+               abs_lyx_dir = binary_dir_.absFileName();
+       else {
+               FileName fn(addPath(binary_dir_.absFileName(), "../"));
+               abs_lyx_dir = fn.realPath();
+       }
+       // The LyX executable may have a package suffix if we are not running
+       // in place.
+       if (build_support_dir_.empty())
+               lyx_binary_ = FileName(addName(abs_lyx_dir,
+                                              "lyx" + string(PROGRAM_SUFFIX)));
+       else
+               lyx_binary_ = FileName(addName(abs_lyx_dir, "lyx"));
+
        locale_dir_ = get_locale_dir(system_support_dir_);
 
        FileName const default_user_support_dir =