]> git.lyx.org Git - lyx.git/blobdiff - src/support/filetools.cpp
Expose python 3 support to some testing
[lyx.git] / src / support / filetools.cpp
index 6acfdf0df8a57f08d3ac55acf802f08907c7f596..fbc8711b15b5ef91cd8fff46573169370f5e28e2 100644 (file)
@@ -51,6 +51,7 @@
 #endif
 
 #include <cerrno>
+#include <climits>
 #include <cstdlib>
 #include <cstdio>
 
@@ -710,8 +711,12 @@ string latexEnvCmdPrefix(string const & path, string const & lpath)
        string texinputs_prefix = lyxrc.texinputs_prefix.empty() ? string()
                : os::latex_path_list(
                        replaceCurdirPath(path, lyxrc.texinputs_prefix));
+       string const allother_prefix = os::latex_path_list(path);
        string const sep = string(1, os::path_separator(os::TEXENGINE));
        string const texinputs = getEnv("TEXINPUTS");
+       string const bibinputs = getEnv("BIBINPUTS");
+       string const bstinputs = getEnv("BSTINPUTS");
+       string const texfonts = getEnv("TEXFONTS");
 
        if (use_lpath) {
                string const abslpath = FileName::isAbsolute(lpath)
@@ -727,13 +732,28 @@ string latexEnvCmdPrefix(string const & path, string const & lpath)
 
        if (os::shell() == os::UNIX)
                return "env TEXINPUTS=\"." + sep + texinputs_prefix
-                                         + sep + texinputs + "\" ";
+                                          + sep + texinputs + "\" "
+                        + "BIBINPUTS=\"." + sep + allother_prefix
+                                          + sep + bibinputs + "\" "
+                        + "BSTINPUTS=\"." + sep + allother_prefix
+                                          + sep + bstinputs + "\" "
+                        + "TEXFONTS=\"."  + sep + allother_prefix
+                                          + sep + texfonts + "\" ";
        else
-               // NOTE: the dummy blank dir is necessary to force the
+               // NOTE: the dummy blank dirs are necessary to force the
                //       QProcess parser to quote the argument (see bug 9453)
                return "cmd /d /c set \"TEXINPUTS=." + sep + " "
-                                               + sep + texinputs_prefix
-                                               + sep + texinputs + "\" & ";
+                                               + sep + texinputs_prefix
+                                               + sep + texinputs + "\" & "
+                              + "set \"BIBINPUTS=." + sep + " "
+                                               + sep + allother_prefix
+                                               + sep + bibinputs + "\" & "
+                              + "set \"BSTINPUTS=." + sep + " "
+                                               + sep + allother_prefix
+                                               + sep + bstinputs + "\" & "
+                              + "set \"TEXFONTS=."  + sep + " "
+                                               + sep + allother_prefix
+                                               + sep + texfonts + "\" & ";
 }
 
 
@@ -942,11 +962,11 @@ docstring const makeDisplayPath(string const & path, unsigned int threshold)
        if (dstr.empty()) {
                // Yes, filename itself is too long.
                // Pick the start and the end of the filename.
-               dstr = from_utf8(onlyFileName(path));
-               docstring::size_type const len = dstr.length();
-               if (len >= threshold)
-                       dstr = support::truncateWithEllipsis(dstr, threshold / 2) +
-                               dstr.substr(len - threshold / 2 - 2, len - 1);
+               docstring fstr = from_utf8(onlyFileName(path));
+               dstr = fstr;
+               if (support::truncateWithEllipsis(dstr, threshold / 2))
+                       dstr += fstr.substr(fstr.length() - threshold / 2 - 2,
+                                                               docstring::npos);
        }
 
        return from_utf8(os::external_path(prefix + to_utf8(dstr)));
@@ -1046,7 +1066,7 @@ cmd_ret const runCommand(string const & cmd)
                                0, 0, &startup, &process)) {
 
                        CloseHandle(process.hThread);
-                       int fno = _open_osfhandle((long)in, _O_RDONLY);
+                       int fno = _open_osfhandle((intptr_t)in, _O_RDONLY);
                        CloseHandle(out);
                        inf = _fdopen(fno, "r");
                }