From 0faabe776bbc0c46f4c9b63dfc1b70b760006bc9 Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Tue, 13 Oct 2009 12:45:35 +0200 Subject: [PATCH] mickeyterm: try to fail gracefully when we can't read anymore --- mickeyterm/mickeyterm | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/mickeyterm/mickeyterm b/mickeyterm/mickeyterm index 6a87613..0984471 100755 --- a/mickeyterm/mickeyterm +++ b/mickeyterm/mickeyterm @@ -537,11 +537,11 @@ class Terminal( object ): break elif c == '\n': if self.convert == "CRLF": - self.serial.write('\r\n') + self.serial.write( '\r\n' ) elif self.convert == "CR": - self.serial.write('\r') + self.serial.write( '\r' ) elif self.convert == "LF": - self.serial.write('\n') + self.serial.write( '\n' ) else: self.serial.write(c) if self.logging: @@ -549,20 +549,23 @@ class Terminal( object ): self.alog.write( c ) def reader( self ): - while True: - data = os.read( self.serial.fd, 4096 ) - if not len( data ): - continue - #data = self.serial.read() - sys.stdout.write(data) - sys.stdout.flush() - if self.debuglog is not None: - self.debuglog.write( "READ %s\n" % repr( data ) ) - self.debuglog.flush() - if self.logging: - self.olog.write( data ) - self.alog.write( data ) - + try: + while True: + data = os.read( self.serial.fd, 4096 ) + if not len( data ): + continue + #data = self.serial.read() + sys.stdout.write(data) + sys.stdout.flush() + if self.debuglog is not None: + self.debuglog.write( "READ %s\n" % repr( data ) ) + self.debuglog.flush() + if self.logging: + self.olog.write( data ) + self.alog.write( data ) + except OSError, e: + sys.stderr.write( "Unable to read anymore: Exiting\n" ) + sys.exit( 0 ) if __name__ == "__main__": import optparse -- 2.11.4.GIT