rfc822.unquote() doesn't properly de-backslash-ify in Python prior to

2.3.  This patch (adapted from Quinn Dunkan's SF patch #573204) fixes
the problem and should get ported to rfc822.py.
This commit is contained in:
Barry Warsaw 2002-09-11 02:22:48 +00:00
parent 93ad6a7a3b
commit 184d55a897
1 changed files with 12 additions and 1 deletions

View File

@ -13,7 +13,7 @@ import warnings
from cStringIO import StringIO from cStringIO import StringIO
from types import ListType from types import ListType
from rfc822 import unquote, quote from rfc822 import quote
from rfc822 import AddressList as _AddressList from rfc822 import AddressList as _AddressList
from rfc822 import mktime_tz from rfc822 import mktime_tz
@ -260,6 +260,17 @@ def parseaddr(addr):
return addrs[0] return addrs[0]
# rfc822.unquote() doesn't properly de-backslash-ify in Python pre-2.3.
def unquote(str):
"""Remove quotes from a string."""
if len(str) > 1:
if str.startswith('"') and str.endswith('"'):
return str[1:-1].replace('\\\\', '\\').replace('\\"', '"')
if str.startswith('<') and str.endswith('>'):
return str[1:-1]
return str
# RFC2231-related functions - parameter encoding and decoding # RFC2231-related functions - parameter encoding and decoding
def decode_rfc2231(s): def decode_rfc2231(s):