]> granicus.if.org Git - python/commitdiff
Tweaks by Lars Wirzenius to parse some more forms of illegal dates:
authorGuido van Rossum <guido@python.org>
Fri, 25 Jul 1997 15:20:52 +0000 (15:20 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 25 Jul 1997 15:20:52 +0000 (15:20 +0000)
the comma after the day name is optional if it is a recognized day
name; and the date and month may be swapped.  Thus, the following two
test dates will now be parsed correctly:
Thu, Feb 13 12:16:57 1992
Thu Feb 13 12:16:57 1992

Lib/rfc822.py

index f34f0b6d67b6b977300d98fffb095d3985daa047..b42eaec85cfdaaaa02a89caabf3765c646b52542 100644 (file)
@@ -397,6 +397,7 @@ def parseaddr(address):
 
 _monthnames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',
          'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
+_daynames = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
 
 # The timezone table does not include the military time zones defined
 # in RFC822, other than Z.  According to RFC1123, the description in
@@ -414,7 +415,7 @@ _timezones = {'UT':0, 'UTC':0, 'GMT':0, 'Z':0,
 
 def parsedate_tz(data):
        data = string.split(data)
-       if data[0][-1] == ',':
+       if data[0][-1] == ',' or data[0] in _daynames:
                # There's a dayname here. Skip it
                del data[0]
        if len(data) == 3: # RFC 850 date, deprecated
@@ -433,7 +434,9 @@ def parsedate_tz(data):
        data = data[:5]
        [dd, mm, yy, tm, tz] = data
        if not mm in _monthnames:
-               return None
+               dd, mm, yy, tm, tz = mm, dd, tm, yy, tz
+               if not mm in _monthnames:
+                       return None
        mm = _monthnames.index(mm)+1
        tm = string.splitfields(tm, ':')
        if len(tm) == 2: