python/dist/src/Lib/email Message.py, 1.32.10.1, 1.32.10.2
Update of /cvsroot/python/python/dist/src/Lib/email In directory sc8-pr-cvs1:/tmp/cvs-serv19963 Modified Files: Tag: release23-maint Message.py Log Message: A fix for parsing parameters when there are semicolons inside the quotes. Fixes SF bug #794466, with the essential patch provided by Stuart D. Gathman. Specifically, _parseparam(), _get_params_preserve(): Use the parsing function that takes quotes into account, as given (essentially) in the bug report's test program. Index: Message.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/email/Message.py,v retrieving revision 1.32.10.1 retrieving revision 1.32.10.2 diff -C2 -d -r1.32.10.1 -r1.32.10.2 *** Message.py 19 Aug 2003 04:52:27 -0000 1.32.10.1 --- Message.py 3 Sep 2003 04:21:29 -0000 1.32.10.2 *************** *** 59,62 **** --- 59,79 ---- return param + def _parseparam(s): + plist = [] + while s[:1] == ';': + s = s[1:] + end = s.find(';') + while end > 0 and s.count('"', 0, end) % 2: + end = s.find(';', end + 1) + if end < 0: + end = len(s) + f = s[:end] + if '=' in f: + i = f.index('=') + f = f[:i].strip().lower() + '=' + f[i+1:].strip() + plist.append(f.strip()) + s = s[end:] + return plist + def _unquotevalue(value): *************** *** 526,530 **** return failobj params = [] ! for p in paramre.split(value): try: name, val = p.split('=', 1) --- 543,547 ---- return failobj params = [] ! for p in _parseparam(';' + value): try: name, val = p.split('=', 1)
participants (1)
-
bwarsaw@users.sourceforge.net