PDF: Better detection of a Cygwin environment.

Should close #5451.

Unlike the earlier fix, this one doesn't spill out to stderr
when 'uname -o' fails.
This commit is contained in:
John MacFarlane 2019-07-20 16:45:11 -07:00
parent fb73b5c27b
commit b6f9318c9b

View file

@ -42,6 +42,7 @@ import Text.Pandoc.Error (PandocError (PandocPDFProgramNotFoundError))
import Text.Pandoc.MIME (getMimeType)
import Text.Pandoc.Options (HTMLMathMethod (..), WriterOptions (..))
import Text.Pandoc.Process (pipeProcess)
import System.Process (readProcessWithExitCode)
import Text.Pandoc.Shared (inDirectory, stringify)
import qualified Text.Pandoc.UTF8 as UTF8
import Text.Pandoc.Walk (walkM)
@ -89,7 +90,13 @@ makePDF program pdfargs writer opts doc =
-- user names (see #777)
let withTempDir templ action = do
tmp <- getTemporaryDirectory
if '~' `elem` tmp
uname <- E.catch
(do (ec, sout, _) <- readProcessWithExitCode "uname" ["-o"] ""
if ec == ExitSuccess
then return $ Just sout
else return Nothing)
(\(_ :: E.SomeException) -> return Nothing)
if '~' `elem` tmp || uname == Just "Cygwin" -- see #5451
then withTempDirectory "." templ action
else withSystemTempDirectory templ action
(newCommonState, res) <- liftIO $ withTempDir "tex2pdf." $ \tmpdir' -> do