[Python-checkins] python/dist/src/Lib tarfile.py, 1.21.2.3, 1.21.2.4

loewis@users.sourceforge.net loewis at users.sourceforge.net
Wed Aug 24 08:45:07 CEST 2005


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13900/Lib

Modified Files:
      Tag: release24-maint
	tarfile.py 
Log Message:
Revert previous checkin.


Index: tarfile.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/tarfile.py,v
retrieving revision 1.21.2.3
retrieving revision 1.21.2.4
diff -u -d -r1.21.2.3 -r1.21.2.4
--- tarfile.py	24 Aug 2005 06:07:17 -0000	1.21.2.3
+++ tarfile.py	24 Aug 2005 06:44:55 -0000	1.21.2.4
@@ -800,7 +800,7 @@
            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 @@
             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 @@
             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 @@
         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 @@
             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
 



More information about the Python-checkins mailing list