From f9189d01cfb1e58960e2247a1557a4f99ad99e2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Wed, 24 Aug 2005 06:44:56 +0000 Subject: Revert previous checkin. --- Lib/tarfile.py | 27 ++++++++++++++++++++------- Misc/NEWS | 2 -- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 363bbee..366a244 100644 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -800,7 +800,7 @@ class TarFile(object): can be determined, `mode' is overridden by `fileobj's mode. `fileobj' is not closed, when TarFile is closed. """ - self.name = os.path.abspath(name) + self.name = name if len(mode) > 1 or mode not in "raw": raise ValueError, "mode must be 'r', 'a' or 'w'" @@ -812,7 +812,7 @@ class TarFile(object): self._extfileobj = False else: if self.name is None and hasattr(fileobj, "name"): - self.name = os.path.abspath(fileobj.name) + self.name = fileobj.name if hasattr(fileobj, "mode"): self.mode = fileobj.mode self._extfileobj = True @@ -948,18 +948,22 @@ class TarFile(object): raise CompressionError, "gzip module is not available" pre, ext = os.path.splitext(name) + pre = os.path.basename(pre) if ext == ".tgz": ext = ".tar" if ext == ".gz": ext = "" - tarname = os.path.basename(pre + ext) + tarname = pre + ext if fileobj is None: fileobj = file(name, mode + "b") + if mode != "r": + name = tarname + try: - t = cls.taropen(name, mode, - gzip.GzipFile(tarname, mode, compresslevel, fileobj) + t = cls.taropen(tarname, mode, + gzip.GzipFile(name, mode, compresslevel, fileobj) ) except IOError: raise ReadError, "not a gzip file" @@ -980,11 +984,19 @@ class TarFile(object): except ImportError: raise CompressionError, "bz2 module is not available" + pre, ext = os.path.splitext(name) + pre = os.path.basename(pre) + if ext == ".tbz2": + ext = ".tar" + if ext == ".bz2": + ext = "" + tarname = pre + ext + if fileobj is not None: raise ValueError, "no support for external file objects" try: - t = cls.taropen(name, mode, bz2.BZ2File(name, mode, compresslevel=compresslevel)) + t = cls.taropen(tarname, mode, bz2.BZ2File(name, mode, compresslevel=compresslevel)) except IOError: raise ReadError, "not a bzip2 file" t._extfileobj = False @@ -1191,7 +1203,8 @@ class TarFile(object): arcname = name # Skip if somebody tries to archive the archive... - if self.name is not None and os.path.samefile(name, self.name): + if self.name is not None \ + and os.path.abspath(name) == os.path.abspath(self.name): self._dbg(2, "tarfile: Skipped %r" % name) return diff --git a/Misc/NEWS b/Misc/NEWS index c8149dd..808d58b 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -63,8 +63,6 @@ Extension Modules Library ------- -- Patch #1262036: Make tarfile name absolute. Fixes #1257255. - - Bug #1266283: "lexists" is now in os.path.__all__. - The sets module can now properly compute s-=s and s^=s as an empty set. -- cgit v0.12