diff options
author | volconst <20997907+volconst@users.noreply.github.com> | 2021-09-21 01:21:57 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-21 01:21:57 +0300 |
commit | 5a328ff8a64bf25532ed866d85c74b1d42def6d0 (patch) | |
tree | 46af97995baaecdddb3413890e3188b7084c59e8 | |
parent | 82ed6302507eff93247e931c77f1c16b1a71f7fd (diff) | |
parent | 1b1d1b531c74373d5b69bce73b204ebc8c5e2f93 (diff) |
Merge pull request #1215 from volconst/readlineIndexError
Sync with python exception type changes
-rw-r--r-- | printrun/printcore.py | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/printrun/printcore.py b/printrun/printcore.py index eaa774d..8e84923 100644 --- a/printrun/printcore.py +++ b/printrun/printcore.py @@ -350,24 +350,28 @@ class printcore(): self.logError(_("Got rubbish reply from %s at baudrate %s:") % (self.port, self.baud) + "\n" + _("Maybe a bad baudrate?")) return None - except SelectError as e: - if 'Bad file descriptor' in e.args[1]: - self.logError(_("Can't read from printer (disconnected?) (SelectError {0}): {1}").format(e.errno, decode_utf8(e.strerror))) - return None - else: - self.logError(_("SelectError ({0}): {1}").format(e.errno, decode_utf8(e.strerror))) - raise except SerialException as e: self.logError(_("Can't read from printer (disconnected?) (SerialException): {0}").format(decode_utf8(str(e)))) return None except socket.error as e: self.logError(_("Can't read from printer (disconnected?) (Socket error {0}): {1}").format(e.errno, decode_utf8(e.strerror))) return None - except OSError as e: - if e.errno == errno.EAGAIN: # Not a real error, no data was available - return "" - self.logError(_("Can't read from printer (disconnected?) (OS Error {0}): {1}").format(e.errno, e.strerror)) - return None + except (OSError, SelectError) as e: + # OSError and SelectError are the same thing since python 3.3 + if self.printer_tcp: + # SelectError branch, assume select is used only for socket printers + if len(e.args) > 1 and 'Bad file descriptor' in e.args[1]: + self.logError(_("Can't read from printer (disconnected?) (SelectError {0}): {1}").format(e.errno, decode_utf8(e.strerror))) + return None + else: + self.logError(_("SelectError ({0}): {1}").format(e.errno, decode_utf8(e.strerror))) + raise + else: + # OSError branch, serial printers + if e.errno == errno.EAGAIN: # Not a real error, no data was available + return "" + self.logError(_("Can't read from printer (disconnected?) (OS Error {0}): {1}").format(e.errno, e.strerror)) + return None def _listen_can_continue(self): if self.printer_tcp: |