True = 1
False = 0
+try:
+ from email._compat22 import quiet_uu_decode
+except SyntaxError:
+ from email._compat21 import quiet_uu_decode
+
+
# Regular expression used to split header parameters. BAW: this may be too
# simple. It isn't strictly RFC 2045 (section 5.1) compliant, but it catches
# most headers found in the wild. We may eventually need a full fledged
elif cte in ('x-uuencode', 'uuencode', 'uue', 'x-uue'):
sfp = StringIO()
try:
- uu.decode(StringIO(payload+'\n'), sfp)
+ quiet_uu_decode(StringIO(payload+'\n'), sfp, quiet=True)
payload = sfp.getvalue()
except uu.Error:
# Some decoding problem
-# Copyright (C) 2002 Python Software Foundation
-# Author: barry@zope.com
+# Copyright (C) 2002-2006 Python Software Foundation
+# Author: barry@python.org
-"""Module containing compatibility functions for Python 2.1.
-"""
+"""Module containing compatibility functions for Python 2.1."""
+
+import uu
+import sys
from cStringIO import StringIO
from types import StringType, UnicodeType
if subtype is None or subpart.get_content_subtype() == subtype:
parts.append(subpart)
return parts
+
+
+\f
+def quiet_uu_decode(in_file, out_file, quiet):
+ # In Python 2.1, uu.decode() does not support the quiet flag. Cheat.
+ old_stderr = sys.stderr
+ try:
+ sys.stderr = StringIO()
+ uu.decode(in_file, out_file)
+ finally:
+ sys.stderr = old_stderr
-# Copyright (C) 2002 Python Software Foundation
-# Author: barry@zope.com
+# Copyright (C) 2002-2006 Python Software Foundation
+# Author: barry@python.org
-"""Module containing compatibility functions for Python 2.2.
+"""Module containing compatibility functions for Python 2.2 (and possibly
+beyond.
"""
from __future__ import generators
from cStringIO import StringIO
from types import StringTypes
+import uu
+
# Python 2.2.x where x < 1 lacks True/False
try:
True, False
if subpart.get_content_maintype() == maintype:
if subtype is None or subpart.get_content_subtype() == subtype:
yield subpart
+
+
+\f
+def quiet_uu_decode(in_file, out_file, quiet):
+ uu.decode(in_file, out_file, quiet=quiet)
msg.set_payload('foo')
eq(msg.get_payload(decode=True), 'foo')
+ def test_decode_bogus_uu_payload_quietly(self):
+ msg = Message()
+ msg.set_payload('begin 664 foo.txt\n%<W1F=0000H \n \nend\n')
+ msg['Content-Transfer-Encoding'] = 'x-uuencode'
+ old_stderr = sys.stderr
+ try:
+ sys.stderr = sfp = StringIO()
+ # We don't care about the payload
+ msg.get_payload(decode=True)
+ finally:
+ sys.stderr = old_stderr
+ self.assertEqual(sfp.getvalue(), '')
+
def test_decoded_generator(self):
eq = self.assertEqual
msg = self._msgobj('msg_07.txt')