]> git.lyx.org Git - lyx.git/blobdiff - src/support/filetools.cpp
Minor cleanup.
[lyx.git] / src / support / filetools.cpp
index 828abea13f0806b828b35a62a590ebe974ee9fc9..5891e79fec62c6b89346ed3e611a265e8a7bc1ca 100644 (file)
@@ -100,13 +100,13 @@ string const latex_path(string const & original_path,
                // We can't use '"' because " is sometimes active (e.g. if
                // babel is loaded with the "german" option)
                if (extension == EXCLUDE_EXTENSION) {
-                       // ChangeExtension calls os::internal_path internally
+                       // changeExtension calls os::internal_path internally
                        // so don't use it to remove the extension.
                        string const ext = getExtension(path);
                        string const base = ext.empty() ?
                                path :
                                path.substr(0, path.length() - ext.length() - 1);
-                       // ChangeExtension calls os::internal_path internally
+                       // changeExtension calls os::internal_path internally
                        // so don't use it to re-add the extension.
                        path = "\\string\"" + base + "\\string\"." + ext;
                } else {
@@ -114,7 +114,18 @@ string const latex_path(string const & original_path,
                }
        }
 
-       return dots == ESCAPE_DOTS ? subst(path, ".", "\\lyxdot ") : path;
+       if (dots != ESCAPE_DOTS)
+               return path;
+
+       // Replace dots with the lyxdot macro, but only in the file name,
+       // not the directory part.
+       // addName etc call os::internal_path internally
+       // so don't use them for path manipulation
+       // The directory separator is always '/' for LaTeX.
+       string::size_type pos = path.rfind('/');
+       if (pos == string::npos)
+               return subst(path, ".", "\\lyxdot ");
+       return path.substr(0, pos) + subst(path.substr(pos), ".", "\\lyxdot ");
 }
 
 
@@ -590,11 +601,11 @@ string latexEnvCmdPrefix(string const & path)
        string const texinputs = getEnv("TEXINPUTS");
 
        if (os::shell() == os::UNIX)
-               return "env 'TEXINPUTS=." + sep + texinputs_prefix
-                                         + sep + texinputs + "' ";
+               return "env TEXINPUTS=\"." + sep + texinputs_prefix
+                                         + sep + texinputs + "\" ";
        else
                return "cmd /d /c set TEXINPUTS=." + sep + texinputs_prefix
-                                                  + sep + texinputs + " & ";
+                                                  + sep + texinputs + "&";
 }
 
 
@@ -791,25 +802,26 @@ docstring const makeDisplayPath(string const & path, unsigned int threshold)
                return from_utf8(os::external_path(str));
 
        string const prefix = ".../";
-       string temp;
+       docstring dstr = from_utf8(str);
+       docstring temp;
 
-       while (str.length() > threshold)
-               str = split(str, temp, '/');
+       while (dstr.length() > threshold)
+               dstr = split(dstr, temp, '/');
 
        // Did we shorten everything away?
-       if (str.empty()) {
+       if (dstr.empty()) {
                // Yes, filename itself is too long.
                // Pick the start and the end of the filename.
-               str = onlyFileName(path);
-               string const head = str.substr(0, threshold / 2 - 3);
+               dstr = from_utf8(onlyFileName(path));
+               docstring const head = dstr.substr(0, threshold / 2 - 3);
 
-               string::size_type len = str.length();
-               string const tail =
-                       str.substr(len - threshold / 2 - 2, len - 1);
-               str = head + "..." + tail;
+               docstring::size_type len = dstr.length();
+               docstring const tail =
+                       dstr.substr(len - threshold / 2 - 2, len - 1);
+               dstr = head + from_ascii("...") + tail;
        }
 
-       return from_utf8(os::external_path(prefix + str));
+       return from_utf8(os::external_path(prefix + to_utf8(dstr)));
 }