summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2010-05-05 21:43:57 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2010-05-05 21:43:57 (GMT)
commitde629d46f2a143e230398a820e9c090295f72ddb (patch)
treefc2cbab3df2c942d77f0f6ead9dc76e650ecd85d /Lib
parentaac786e5862ac032c903215d6632898af3002532 (diff)
downloadcpython-de629d46f2a143e230398a820e9c090295f72ddb.zip
cpython-de629d46f2a143e230398a820e9c090295f72ddb.tar.gz
cpython-de629d46f2a143e230398a820e9c090295f72ddb.tar.bz2
Issue #8390: tarfile uses surrogateespace as the default error handler
(instead of replace in read mode or strict in write mode)
Diffstat (limited to 'Lib')
-rw-r--r--Lib/tarfile.py12
-rw-r--r--Lib/test/test_tarfile.py4
2 files changed, 5 insertions, 11 deletions
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index a888d69..81b13a6 100644
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -978,7 +978,7 @@ class TarInfo(object):
return info
- def tobuf(self, format=DEFAULT_FORMAT, encoding=ENCODING, errors="strict"):
+ def tobuf(self, format=DEFAULT_FORMAT, encoding=ENCODING, errors="surrogateescape"):
"""Return a tar header as a string of 512 byte blocks.
"""
info = self.get_info()
@@ -1490,7 +1490,7 @@ class TarFile(object):
def __init__(self, name=None, mode="r", fileobj=None, format=None,
tarinfo=None, dereference=None, ignore_zeros=None, encoding=None,
- errors=None, pax_headers=None, debug=None, errorlevel=None):
+ errors="surrogateescape", pax_headers=None, debug=None, errorlevel=None):
"""Open an (uncompressed) tar archive `name'. `mode' is either 'r' to
read from an existing archive, 'a' to append data to an existing
file or 'w' to create a new file overwriting an existing one. `mode'
@@ -1531,13 +1531,7 @@ class TarFile(object):
self.ignore_zeros = ignore_zeros
if encoding is not None:
self.encoding = encoding
-
- if errors is not None:
- self.errors = errors
- elif mode == "r":
- self.errors = "replace"
- else:
- self.errors = "strict"
+ self.errors = errors
if pax_headers is not None and self.format == PAX_FORMAT:
self.pax_headers = pax_headers
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index 43527ef..2db18fe 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -1118,8 +1118,8 @@ class UstarUnicodeTest(unittest.TestCase):
if self.format != tarfile.PAX_FORMAT:
tar = tarfile.open(tmpname, encoding="ascii")
t = tar.getmember("foo")
- self.assertEqual(t.uname, "\ufffd\ufffd\ufffd")
- self.assertEqual(t.gname, "\ufffd\ufffd\ufffd")
+ self.assertEqual(t.uname, "\udce4\udcf6\udcfc")
+ self.assertEqual(t.gname, "\udce4\udcf6\udcfc")
class GNUUnicodeTest(UstarUnicodeTest):