]> git.lyx.org Git - lyx.git/blobdiff - src/support/filetools.cpp
Get rid of regex_constants::match_partial
[lyx.git] / src / support / filetools.cpp
index d167d6a94cb1a52ddd7b5401c6a2c17a513ee3f8..040272aade620e406bed47dcca8947126c0c763d 100644 (file)
@@ -46,6 +46,9 @@
 #ifdef HAVE_MAGIC_H
 #include <magic.h>
 #endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
 
 #include <cerrno>
 #include <cstdlib>
@@ -236,6 +239,8 @@ string const quoteName(string const & name, quote_style style)
                // simple parser in Systemcall.cpp do the substitution.
                return '"' + subst(name, "\"", "\\\"") + '"';
 #endif
+       case quote_shell_filename:
+               return quoteName(os::external_path(name), quote_shell);
        case quote_python:
                return "\"" + subst(subst(name, "\\", "\\\\"), "\"", "\\\"")
                     + "\"";
@@ -300,8 +305,14 @@ FileName const fileSearch(string const & path, string const & name,
                return mode == may_not_exist ? fullname : FileName();
        // Only add the extension if it is not already the extension of
        // fullname.
-       if (getExtension(fullname.absFileName()) != ext)
+       if (getExtension(fullname.absFileName()) != ext) {
+               if (mode == check_hidpi) {
+                       FileName fullname2x = FileName(addExtension(fullname.absFileName() + "@2x", ext));
+                       if (fullname2x.isReadableFile())
+                               return fullname2x;
+               }
                fullname = FileName(addExtension(fullname.absFileName(), ext));
+       }
        if (fullname.isReadableFile() || mode == may_not_exist)
                return fullname;
        return FileName();
@@ -313,20 +324,21 @@ FileName const fileSearch(string const & path, string const & name,
 //   2) build_lyxdir (if not empty)
 //   3) system_lyxdir
 FileName const libFileSearch(string const & dir, string const & name,
-                          string const & ext)
+                          string const & ext, search_mode mode)
 {
        FileName fullname = fileSearch(addPath(package().user_support().absFileName(), dir),
-                                    name, ext);
+                                    name, ext, mode);
        if (!fullname.empty())
                return fullname;
 
        if (!package().build_support().empty())
                fullname = fileSearch(addPath(package().build_support().absFileName(), dir),
-                                     name, ext);
+                                     name, ext, mode);
        if (!fullname.empty())
                return fullname;
 
-       return fileSearch(addPath(package().system_support().absFileName(), dir), name, ext);
+       return fileSearch(addPath(package().system_support().absFileName(), dir),
+                                     name, ext, mode);
 }
 
 
@@ -381,17 +393,17 @@ FileName const i18nLibFileSearch(string const & dir, string const & name,
 
 
 FileName const imageLibFileSearch(string & dir, string const & name,
-                 string const & ext)
+                 string const & ext, search_mode mode)
 {
        if (!lyx::lyxrc.icon_set.empty()) {
                string const imagedir = addPath(dir, lyx::lyxrc.icon_set);
-               FileName const fn = libFileSearch(imagedir, name, ext);
+               FileName const fn = libFileSearch(imagedir, name, ext, mode);
                if (fn.exists()) {
                        dir = imagedir;
                        return fn;
                }
        }
-       return libFileSearch(dir, name, ext);
+       return libFileSearch(dir, name, ext, mode);
 }
 
 
@@ -694,8 +706,15 @@ string latexEnvCmdPrefix(string const & path)
                return "env TEXINPUTS=\"." + sep + texinputs_prefix
                                          + sep + texinputs + "\" ";
        else
-               return "cmd /d /c set TEXINPUTS=." + sep + texinputs_prefix
-                                                  + sep + texinputs + "&";
+#ifndef USE_QPROCESS
+               return "cmd /d /c set \"TEXINPUTS=."
+                                               + sep + texinputs_prefix
+                                               + sep + texinputs + "\"&";
+#else
+               return "cmd /d /c set \"\"\"TEXINPUTS=."
+                                               + sep + texinputs_prefix
+                                               + sep + texinputs + "\"\"\"&";
+#endif
 }