Advertisement
Guest User

Untitled

a guest
Nov 26th, 2011
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.29 KB | None | 0 0
  1. diff --git a/urwid/vterm.py b/urwid/vterm.py
  2. index 76f9611..d832be6 100644
  3. --- a/urwid/vterm.py
  4. +++ b/urwid/vterm.py
  5. @@ -1390,11 +1390,16 @@ class Terminal(BoxWidget):
  6.              else:
  7.                  os.execvpe(self.command[0], self.command, env)
  8.  
  9. -        if self.main_loop is None:
  10. -            fcntl.fcntl(self.master, fcntl.F_SETFL, os.O_NONBLOCK)
  11. +        fcntl.fcntl(self.master, fcntl.F_SETFL, os.O_NONBLOCK)
  12. +        self.master = os.fdopen(self.master, 'w+', 0)
  13.  
  14.          atexit.register(self.terminate)
  15.  
  16. +    def signal(self, signo):
  17. +        if self.pid <= 0:
  18. +            return
  19. +        return os.kill(self.pid, signo)
  20. +
  21.      def terminate(self):
  22.          if self.terminated:
  23.              return
  24. @@ -1408,7 +1413,7 @@ class Terminal(BoxWidget):
  25.              for sig in (signal.SIGHUP, signal.SIGCONT, signal.SIGINT,
  26.                          signal.SIGTERM, signal.SIGKILL):
  27.                  try:
  28. -                    os.kill(self.pid, sig)
  29. +                    self.signal(sig)
  30.                      pid, status = os.waitpid(self.pid, os.WNOHANG)
  31.                  except OSError:
  32.                      break
  33. @@ -1420,8 +1425,7 @@ class Terminal(BoxWidget):
  34.                  os.waitpid(self.pid, 0)
  35.              except OSError:
  36.                  pass
  37. -
  38. -            os.close(self.master)
  39. +            self.master.close()
  40.  
  41.      def beep(self):
  42.          self._emit('beep')
  43. @@ -1437,7 +1441,7 @@ class Terminal(BoxWidget):
  44.  
  45.      def flush_responses(self):
  46.          for string in self.response_buffer:
  47. -            os.write(self.master, string.encode('ascii'))
  48. +            self.master.write(string.encode('ascii'))
  49.          self.response_buffer = []
  50.  
  51.      def set_termsize(self, width, height):
  52. @@ -1520,8 +1524,8 @@ class Terminal(BoxWidget):
  53.          data = ''
  54.  
  55.          try:
  56. -            data = os.read(self.master, 4096)
  57. -        except OSError, e:
  58. +            data = self.master.read(4096)
  59. +        except (IOError,OSError), e:
  60.              if e.errno == 5: # End Of File
  61.                  data = ''
  62.              elif e.errno == errno.EWOULDBLOCK: # empty buffer
  63. @@ -1612,4 +1616,4 @@ class Terminal(BoxWidget):
  64.          if sys.version_info[0] >= 3:
  65.              key = bytes(key, 'ascii')
  66.  
  67. -        os.write(self.master, key)
  68. +        self.master.write(key)
  69.  
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement