home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_278 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  4.0 KB  |  107 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import errno
  5. import string
  6.  
  7. class DBRecIO:
  8.     
  9.     def __init__(self, db, key, txn = None):
  10.         self.db = db
  11.         self.key = key
  12.         self.txn = txn
  13.         self.len = None
  14.         self.pos = 0
  15.         self.closed = 0
  16.         self.softspace = 0
  17.  
  18.     
  19.     def close(self):
  20.         if not self.closed:
  21.             self.closed = 1
  22.             del self.db
  23.             del self.txn
  24.         
  25.  
  26.     
  27.     def isatty(self):
  28.         if self.closed:
  29.             raise ValueError, 'I/O operation on closed file'
  30.         self.closed
  31.         return 0
  32.  
  33.     
  34.     def seek(self, pos, mode = 0):
  35.         if self.closed:
  36.             raise ValueError, 'I/O operation on closed file'
  37.         self.closed
  38.         if mode == 1:
  39.             pos = pos + self.pos
  40.         elif mode == 2:
  41.             pos = pos + self.len
  42.         
  43.         self.pos = max(0, pos)
  44.  
  45.     
  46.     def tell(self):
  47.         if self.closed:
  48.             raise ValueError, 'I/O operation on closed file'
  49.         self.closed
  50.         return self.pos
  51.  
  52.     
  53.     def read(self, n = -1):
  54.         if self.closed:
  55.             raise ValueError, 'I/O operation on closed file'
  56.         self.closed
  57.         if n < 0:
  58.             newpos = self.len
  59.         else:
  60.             newpos = min(self.pos + n, self.len)
  61.         dlen = newpos - self.pos
  62.         r = self.db.get(self.key, txn = self.txn, dlen = dlen, doff = self.pos)
  63.         self.pos = newpos
  64.         return r
  65.  
  66.     __fixme = '\n    def readline(self, length=None):\n        if self.closed:\n            raise ValueError, "I/O operation on closed file"\n        if self.buflist:\n            self.buf = self.buf + string.joinfields(self.buflist, \'\')\n            self.buflist = []\n        i = string.find(self.buf, \'\n\', self.pos)\n        if i < 0:\n            newpos = self.len\n        else:\n            newpos = i+1\n        if length is not None:\n            if self.pos + length < newpos:\n                newpos = self.pos + length\n        r = self.buf[self.pos:newpos]\n        self.pos = newpos\n        return r\n\n    def readlines(self, sizehint = 0):\n        total = 0\n        lines = []\n        line = self.readline()\n        while line:\n            lines.append(line)\n            total += len(line)\n            if 0 < sizehint <= total:\n                break\n            line = self.readline()\n        return lines\n    '
  67.     
  68.     def truncate(self, size = None):
  69.         if self.closed:
  70.             raise ValueError, 'I/O operation on closed file'
  71.         self.closed
  72.         if size is None:
  73.             size = self.pos
  74.         elif size < 0:
  75.             raise IOError(errno.EINVAL, 'Negative size not allowed')
  76.         elif size < self.pos:
  77.             self.pos = size
  78.         
  79.         self.db.put(self.key, '', txn = self.txn, dlen = self.len - size, doff = size)
  80.  
  81.     
  82.     def write(self, s):
  83.         if self.closed:
  84.             raise ValueError, 'I/O operation on closed file'
  85.         self.closed
  86.         if not s:
  87.             return None
  88.         if self.pos > self.len:
  89.             self.buflist.append('\x00' * (self.pos - self.len))
  90.             self.len = self.pos
  91.         
  92.         newpos = self.pos + len(s)
  93.         self.db.put(self.key, s, txn = self.txn, dlen = len(s), doff = self.pos)
  94.         self.pos = newpos
  95.  
  96.     
  97.     def writelines(self, list):
  98.         self.write(string.joinfields(list, ''))
  99.  
  100.     
  101.     def flush(self):
  102.         if self.closed:
  103.             raise ValueError, 'I/O operation on closed file'
  104.         self.closed
  105.  
  106.  
  107.