home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 January / maximum-cd-2011-01.iso / DiscContents / calibre-0.7.26.msi / file_1922 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-10-31  |  1.9 KB  |  56 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __docformat__ = 'restructuredtext en'
  5. import os
  6. import sys
  7. STDOUT = 1
  8. STDERR = 2
  9.  
  10. class FDRedirector(object):
  11.     
  12.     def __init__(self, fd = STDOUT):
  13.         self.fd = fd
  14.         self.started = False
  15.         self.piper = None
  16.         self.pipew = None
  17.  
  18.     
  19.     def start(self):
  20.         if not self.started:
  21.             self.oldhandle = os.dup(self.fd)
  22.             (self.piper, self.pipew) = os.pipe()
  23.             os.dup2(self.pipew, self.fd)
  24.             os.close(self.pipew)
  25.             self.started = True
  26.         
  27.  
  28.     
  29.     def flush(self):
  30.         if self.fd == STDOUT:
  31.             sys.stdout.flush()
  32.         elif self.fd == STDERR:
  33.             sys.stderr.flush()
  34.         
  35.  
  36.     
  37.     def stop(self):
  38.         if self.started:
  39.             self.flush()
  40.             os.dup2(self.oldhandle, self.fd)
  41.             os.close(self.oldhandle)
  42.             f = os.fdopen(self.piper, 'r')
  43.             output = f.read()
  44.             f.close()
  45.             self.started = False
  46.             return output
  47.         return ''
  48.  
  49.     
  50.     def getvalue(self):
  51.         output = self.stop()
  52.         self.start()
  53.         return output
  54.  
  55.  
  56.