From 670f450d78c29d5e476f2b9fe0d0b9aca1fc2788 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 24 Feb 2009 22:43:32 -0800 Subject: [PATCH] Make PDF conversion on OSX more robust. Fixes #1927 (PDF->MOBI traceback) --- src/calibre/ebooks/lrf/pdf/convert_from.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/lrf/pdf/convert_from.py b/src/calibre/ebooks/lrf/pdf/convert_from.py index ac9c4b3ade..cc8ebd64b8 100644 --- a/src/calibre/ebooks/lrf/pdf/convert_from.py +++ b/src/calibre/ebooks/lrf/pdf/convert_from.py @@ -3,6 +3,7 @@ __copyright__ = '2008, Kovid Goyal ' '''''' import sys, os, subprocess, logging +import errno from functools import partial from calibre import isosx, setup_cli_handlers, filename_to_utf8, iswindows, islinux from calibre.ebooks import ConversionError, DRMError @@ -41,14 +42,26 @@ def generate_html(pathtopdf, tdir): try: os.chdir(tdir) try: - p = popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE) + p = popen(cmd, stderr=subprocess.PIPE) except OSError, err: if err.errno == 2: raise ConversionError(_('Could not find pdftohtml, check it is in your PATH'), True) else: raise + + ''' print p.stdout.read() - ret = p.wait() + ''' + while True: + try: + ret = p.wait() + break + except OSError, e: + if e.errno == errno.EINTR: + continue + else: + raise + if ret != 0: err = p.stderr.read() raise ConversionError, err