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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import os
  5. import struct
  6. import sys
  7.  
  8. try:
  9.     import dbm
  10.     _dbmerror = dbm.error
  11. except ImportError:
  12.     dbm = None
  13.     _dbmerror = IOError
  14.  
  15.  
  16. def whichdb(filename):
  17.     
  18.     try:
  19.         f = open(filename + os.extsep + 'pag', 'rb')
  20.         f.close()
  21.         if not dbm.library == 'GNU gdbm' and sys.platform == 'os2emx':
  22.             f = open(filename + os.extsep + 'dir', 'rb')
  23.             f.close()
  24.         
  25.         return 'dbm'
  26.     except IOError:
  27.         
  28.         try:
  29.             f = open(filename + os.extsep + 'db', 'rb')
  30.             f.close()
  31.             if dbm is not None:
  32.                 d = dbm.open(filename)
  33.                 d.close()
  34.                 return 'dbm'
  35.         except (IOError, _dbmerror):
  36.             pass
  37.         except:
  38.             None<EXCEPTION MATCH>(IOError, _dbmerror)
  39.         
  40.  
  41.         None<EXCEPTION MATCH>(IOError, _dbmerror)
  42.  
  43.     
  44.     try:
  45.         os.stat(filename + os.extsep + 'dat')
  46.         size = os.stat(filename + os.extsep + 'dir').st_size
  47.         if size == 0:
  48.             return 'dumbdbm'
  49.         f = open(filename + os.extsep + 'dir', 'rb')
  50.         
  51.         try:
  52.             if f.read(1) in ("'", '"'):
  53.                 return 'dumbdbm'
  54.         finally:
  55.             f.close()
  56.  
  57.     except (OSError, IOError):
  58.         pass
  59.  
  60.     
  61.     try:
  62.         f = open(filename, 'rb')
  63.     except IOError:
  64.         return None
  65.  
  66.     s16 = f.read(16)
  67.     f.close()
  68.     s = s16[0:4]
  69.     if len(s) != 4:
  70.         return ''
  71.     
  72.     try:
  73.         (magic,) = struct.unpack('=l', s)
  74.     except struct.error:
  75.         len(s) != 4
  76.         len(s) != 4
  77.         return ''
  78.  
  79.     if magic == 324508366:
  80.         return 'gdbm'
  81.     if magic in (398689, 1628767744):
  82.         return 'bsddb185'
  83.     
  84.     try:
  85.         (magic,) = struct.unpack('=l', s16[-4:])
  86.     except struct.error:
  87.         magic in (398689, 1628767744)
  88.         magic in (398689, 1628767744)
  89.         magic == 324508366
  90.         return ''
  91.         len(s) != 4
  92.  
  93.     if magic in (398689, 1628767744):
  94.         return 'dbhash'
  95.     return ''
  96.  
  97. if __name__ == '__main__':
  98.     for filename in sys.argv[1:]:
  99.         if not whichdb(filename):
  100.             pass
  101.         print 'UNKNOWN', filename
  102.     
  103.  
  104.