]> granicus.if.org Git - python/commitdiff
Fix by Lars Gustaebel for bug 721871: don't get upset if the prefix
authorJack Jansen <jack.jansen@cwi.nl>
Tue, 22 Apr 2003 22:03:11 +0000 (22:03 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Tue, 22 Apr 2003 22:03:11 +0000 (22:03 +0000)
field contains garbage after the first NUL character.

Lib/tarfile.py

index af733deb3233016689260f58acc4ce48720553c9..9dd8601cb63e445b58cae9001af8a44b2fa40367 100644 (file)
@@ -671,18 +671,13 @@ class TarInfo(object):
             tarinfo.devminor = int(buf[337:345], 8)
         except ValueError:
             tarinfo.devmajor = tarinfo.devmajor = 0
+        tarinfo.prefix = buf[345:500]
 
         # The prefix field is used for filenames > 100 in
         # the POSIX standard.
-        # name = prefix + "/" + name
-        prefix = buf[345:500]
-        while prefix and prefix[-1] == NUL:
-            prefix = prefix[:-1]
-        if len(prefix.split(NUL)) == 1:
-            tarinfo.prefix = prefix
-            tarinfo.name = normpath(os.path.join(tarinfo.prefix, tarinfo.name))
-        else:
-            tarinfo.prefix = buf[345:500]
+        # name = prefix + '/' + name
+        if tarinfo.type != GNUTYPE_SPARSE:
+            tarinfo.name = normpath(os.path.join(nts(tarinfo.prefix), tarinfo.name))
 
         # Directory names should have a '/' at the end.
         if tarinfo.isdir() and tarinfo.name[-1:] != "/":