]> git.lyx.org Git - features.git/commitdiff
On Windows, improve detection of the TeX engine by avoiding spaces in
authorEnrico Forestieri <forenr@lyx.org>
Wed, 1 Jun 2011 22:22:58 +0000 (22:22 +0000)
committerEnrico Forestieri <forenr@lyx.org>
Wed, 1 Jun 2011 22:22:58 +0000 (22:22 +0000)
filenames passed to latex (through the short form of the path) and also
by taking into account that a short form may not always be available.
Such detection may still fail if the file system does not support short
names and the TeX engine doesn't allow spaces in filenames, but this is
a highly improbable condition, hopefully.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_2_0_X@38921 a592a061-630c-0410-9148-cb99ea01b6c8

lib/configure.py
status.20x

index b376d5029d47eb9b2c62e8705489e80fa983e495..c14bf0b04a1ef15f9375c6a1da6635378ed4942a 100644 (file)
@@ -102,7 +102,15 @@ def checkTeXPaths():
         from tempfile import mkstemp
         fd, tmpfname = mkstemp(suffix='.ltx')
         if os.name == 'nt':
-            inpname = tmpfname.replace('\\', '/')
+            from ctypes import windll, create_unicode_buffer
+            GetShortPathName = windll.kernel32.GetShortPathNameW
+            longname = unicode(tmpfname)
+            shortlen = GetShortPathName(longname, 0, 0)
+            shortname = create_unicode_buffer(shortlen)
+            if GetShortPathName(longname, shortname, shortlen):
+                inpname = shortname.value.replace('\\', '/')
+            else:
+                inpname = tmpfname.replace('\\', '/')
         else:
             inpname = cmdOutput('cygpath -m ' + tmpfname)
         logname = os.path.basename(inpname.replace('.ltx', '.log'))
@@ -110,6 +118,8 @@ def checkTeXPaths():
         os.write(fd, r'\relax')
         os.close(fd)
         latex_out = cmdOutput(r'latex "\nonstopmode\input{%s}"' % inpname)
+        if 'Error' in latex_out:
+            latex_out = cmdOutput(r'latex "\nonstopmode\input{\"%s\"}"' % inpname)
         if 'Error' in latex_out:
             logger.warning("configure: TeX engine needs posix-style paths in latex files")
             windows_style_tex_paths = 'false'
@@ -1293,7 +1303,7 @@ def checkTeXAllowSpaces():
         msg = "Checking whether TeX allows spaces in file names... "
         writeToFile('a b.tex', r'\message{working^^J}' )
         if LATEX != '':
-            if os.name == 'nt':
+            if os.name == 'nt' or sys.platform == 'cygwin':
                 latex_out = cmdOutput(LATEX + r""" "\nonstopmode\input{\"a b\"}" """)
             else:
                 latex_out = cmdOutput(LATEX + r""" '\nonstopmode\input{"a b"}' """)
index f8c92a79c8bc4257909134b91ae45af95e4b0f2c..5eb7b2331d0acfe64b69a6e0542714dd4dd9d6c5 100644 (file)
@@ -91,6 +91,9 @@ What's new
 - Calculate relative pathnames to master documents when master is in a
   directory above the child (bug #7540).
 
+- On Windows, improve detection of the TeX engine when the file system does
+  not support short names and the temp directory contains spaces.
+
 
 * USER INTERFACE