Commits

Michael W. Hudson  committed b726e6b

backport akuchling's checkin of
revision 1.14 of netrc.py

[Bug #532115] netrc module was broken
* 'macdef' (macro definition) wasn't parsed correctly
* account value not reset for a subsequent 'default' line
* typo: 'whitepace' -> 'whitespace'

Bugfix candidate.

  • Participants
  • Parent commits 75ef1f1
  • Branches 2.2

Comments (0)

Files changed (1)

File Lib/netrc.py

             elif tt == 'macdef':                # Just skip to end of macdefs
                 entryname = lexer.get_token()
                 self.macros[entryname] = []
-                lexer.whitepace = ' \t'
+                lexer.whitespace = ' \t'
                 while 1:
                     line = lexer.instream.readline()
-                    if not line or line == '\012' and tt == '\012':
-                        lexer.whitepace = ' \t\r\n'
+                    if not line or line == '\012':
+                        lexer.whitespace = ' \t\r\n'
                         break
-                    tt = line
                     self.macros[entryname].append(line)
+                continue
             else:
                 raise NetrcParseError(
                     "bad toplevel token %r" % tt, file, lexer.lineno)
 
             # We're looking at start of an entry for a named machine or default.
-            if toplevel == 'machine':
-                login = account = password = None
-                self.hosts[entryname] = {}
+            login = account = password = None
+            self.hosts[entryname] = {}
             while 1:
                 tt = lexer.get_token()
-                if tt=='' or tt == 'machine' or tt == 'default' or tt == 'macdef':
-                    if toplevel == 'macdef':
-                        break
-                    elif login and password:
+                if (tt=='' or tt == 'machine' or
+                    tt == 'default' or tt =='macdef'):
+                    if login and password:
                         self.hosts[entryname] = (login, account, password)
                         lexer.push_token(tt)
                         break