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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import os
  5. import shlex
  6. __all__ = [
  7.     'netrc',
  8.     'NetrcParseError']
  9.  
  10. class NetrcParseError(Exception):
  11.     
  12.     def __init__(self, msg, filename = None, lineno = None):
  13.         self.filename = filename
  14.         self.lineno = lineno
  15.         self.msg = msg
  16.         Exception.__init__(self, msg)
  17.  
  18.     
  19.     def __str__(self):
  20.         return '%s (%s, line %s)' % (self.msg, self.filename, self.lineno)
  21.  
  22.  
  23.  
  24. class netrc:
  25.     
  26.     def __init__(self, file = None):
  27.         if file is None:
  28.             
  29.             try:
  30.                 file = os.path.join(os.environ['HOME'], '.netrc')
  31.             except KeyError:
  32.                 raise IOError('Could not find .netrc: $HOME is not set')
  33.             except:
  34.                 None<EXCEPTION MATCH>KeyError
  35.             
  36.  
  37.         None<EXCEPTION MATCH>KeyError
  38.         fp = open(file)
  39.         self.hosts = { }
  40.         self.macros = { }
  41.         lexer = shlex.shlex(fp)
  42.         lexer.wordchars += '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
  43.         while not tt:
  44.             break
  45.         toplevel = tt = lexer.get_token()
  46.         if tt == 'machine':
  47.             entryname = lexer.get_token()
  48.         elif tt == 'default':
  49.             entryname = 'default'
  50.         elif tt == 'macdef':
  51.             entryname = lexer.get_token()
  52.             self.macros[entryname] = []
  53.             lexer.whitespace = ' \t'
  54.             while None:
  55.                 line = lexer.instream.readline()
  56.                 if not line or line == '\n':
  57.                     lexer.whitespace = ' \t\r\n'
  58.                     break
  59.                 
  60.                 continue
  61.                 continue
  62.         lexer
  63.         raise NetrcParseError('bad toplevel token %r' % tt, file, lexer.lineno)
  64.         login = ''
  65.         account = None
  66.         password = None
  67.         self.hosts[entryname] = { }
  68.         while None:
  69.             tt = lexer.get_token()
  70.             if tt == '' and tt == 'machine' and tt == 'default' or tt == 'macdef':
  71.                 if password:
  72.                     self.hosts[entryname] = (login, account, password)
  73.                     lexer.push_token(tt)
  74.                     break
  75.                 else:
  76.                     raise NetrcParseError('malformed %s entry %s terminated by %s' % (toplevel, entryname, repr(tt)), file, lexer.lineno)
  77.             if tt == 'login' or tt == 'user':
  78.                 login = lexer.get_token()
  79.                 continue
  80.             if tt == 'account':
  81.                 account = lexer.get_token()
  82.                 continue
  83.             if tt == 'password':
  84.                 password = lexer.get_token()
  85.                 continue
  86.             raise NetrcParseError('bad follower token %r' % tt, file, lexer.lineno)
  87.             continue
  88.             continue
  89.             return None
  90.  
  91.     
  92.     def authenticators(self, host):
  93.         if host in self.hosts:
  94.             return self.hosts[host]
  95.         if 'default' in self.hosts:
  96.             return self.hosts['default']
  97.         return None
  98.  
  99.     
  100.     def __repr__(self):
  101.         rep = ''
  102.         for host in self.hosts.keys():
  103.             attrs = self.hosts[host]
  104.             rep = rep + 'machine ' + host + '\n\tlogin ' + repr(attrs[0]) + '\n'
  105.             if attrs[1]:
  106.                 rep = rep + 'account ' + repr(attrs[1])
  107.             
  108.             rep = rep + '\tpassword ' + repr(attrs[2]) + '\n'
  109.         
  110.         for macro in self.macros.keys():
  111.             rep = rep + 'macdef ' + macro + '\n'
  112.             for line in self.macros[macro]:
  113.                 rep = rep + line
  114.             
  115.             rep = rep + '\n'
  116.         
  117.         return rep
  118.  
  119.  
  120. if __name__ == '__main__':
  121.     print netrc()
  122.  
  123.