[Python-checkins] python/dist/src/Lib tarfile.py,1.33,1.34

nnorwitz@users.sourceforge.net nnorwitz at users.sourceforge.net
Thu Oct 20 06:50:16 CEST 2005

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

Modified Files:
Log Message:
Fix SF bug # 1330039, patch # 1331635 from Lars Gustaebel (tarfile maintainer)

Problem: if two files are assigned the same inode
number by the filesystem, the second one will be added
as a hardlink to the first, which means that the
content will be lost.

The patched code checks if the file's st_nlink is
greater 1. So only for files that actually have several
links pointing to them hardlinks will be created, which
is what GNU tar does. 

Will backport.

Index: tarfile.py
RCS file: /cvsroot/python/python/dist/src/Lib/tarfile.py,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- tarfile.py	11 Sep 2005 16:34:05 -0000	1.33
+++ tarfile.py	20 Oct 2005 04:50:13 -0000	1.34
@@ -1150,7 +1150,8 @@
         stmd = statres.st_mode
         if stat.S_ISREG(stmd):
             inode = (statres.st_ino, statres.st_dev)
-            if inode in self.inodes and not self.dereference:
+            if not self.dereference and \
+                    statres.st_nlink > 1 and inode in self.inodes:
                 # Is it a hardlink to an already
                 # archived file?
                 type = LNKTYPE

More information about the Python-checkins mailing list