diff options
author | John MacFarlane <fiddlosopher@gmail.com> | 2012-01-21 14:18:36 -0800 |
---|---|---|
committer | John MacFarlane <fiddlosopher@gmail.com> | 2012-01-21 14:18:36 -0800 |
commit | e6e4311ddd3f964122a309af926dc95f6ef970d9 (patch) | |
tree | 372293706afe60e9b7e5c0e89f7e9bda725009b3 | |
parent | 194bdadc57fffc698aedfd43c0cb2aa09e3a75ea (diff) | |
download | pandoc-e6e4311ddd3f964122a309af926dc95f6ef970d9.tar.gz |
pandoc: Better error checking.
-rw-r--r-- | src/Text/Pandoc/PDF.hs | 10 | ||||
-rw-r--r-- | src/pandoc.hs | 10 |
2 files changed, 15 insertions, 5 deletions
diff --git a/src/Text/Pandoc/PDF.hs b/src/Text/Pandoc/PDF.hs index b3d0fcbb8..85689fa9b 100644 --- a/src/Text/Pandoc/PDF.hs +++ b/src/Text/Pandoc/PDF.hs @@ -72,9 +72,9 @@ extractMsg log' = do let msg' = dropWhile (not . ("!" `BC.isPrefixOf`)) $ BC.lines log' let (msg'',rest) = break ("l." `BC.isPrefixOf`) msg' let lineno = take 1 rest - if not (null msg') - then BC.unlines (msg'' ++ lineno) - else "Unknown errorR" + if null msg' + then log' + else BC.unlines (msg'' ++ lineno) parseLine :: ByteString -> Bool parseLine ln = @@ -101,7 +101,7 @@ runTeXProgram program runsLeft tmpDir source = do hClose h let programArgs = ["-halt-on-error", "-interaction", "nonstopmode", "-output-directory", tmpDir, file] - (exit, out, _err) <- readCommand program programArgs + (exit, out, err) <- readCommand program programArgs removeFile file let pdfFile = replaceDirectory (replaceExtension file ".pdf") tmpDir pdfExists <- doesFileExist pdfFile @@ -110,7 +110,7 @@ runTeXProgram program runsLeft tmpDir source = do else return Nothing if hasUndefinedRefs out && runsLeft > 0 then runTeXProgram program (runsLeft - 1) tmpDir source - else return (exit, out, pdf) + else return (exit, out <> err, pdf) -- utility functions diff --git a/src/pandoc.hs b/src/pandoc.hs index 6eac02ee2..bb190aeba 100644 --- a/src/pandoc.hs +++ b/src/pandoc.hs @@ -549,6 +549,16 @@ options = "FILENAME") "" -- "Path of epub metadata file" + , Option "" ["latex-program"] + (ReqArg + (\arg opt -> do + let b = takeBaseName arg + if (b == "pdflatex" || b == "lualatex" || b == "xelatex") + then return opt { optLaTeXProgram = arg } + else err 45 "latex-program must be pdflatex, lualatex, or xelatex.") + "PROGRAM") + "" -- "Name of latex program to use in generating PDF" + , Option "D" ["print-default-template"] (ReqArg (\arg _ -> do |