Patch #1338314, Bug #1336623: fix tarfile so it can extract
REGTYPE directories from tarfiles written by old programs.

Will backport.
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index c86248c..0b3d477 100644
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -739,6 +739,11 @@
             tarinfo.devmajor = tarinfo.devmajor = 0
         tarinfo.prefix = buf[345:500]
 
+        # Some old tar programs represent a directory as a regular
+        # file with a trailing slash.
+        if tarinfo.isreg() and tarinfo.name.endswith("/"):
+            tarinfo.type = DIRTYPE
+
         # The prefix field is used for filenames > 100 in
         # the POSIX standard.
         # name = prefix + '/' + name
@@ -746,7 +751,7 @@
             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:] != "/":
+        if tarinfo.isdir():
             tarinfo.name += "/"
         return tarinfo
 
@@ -1716,10 +1721,6 @@
             # Skip the following data blocks.
             self.offset += self._block(tarinfo.size)
 
-        if tarinfo.isreg() and tarinfo.name[:-1] == "/":
-            # some old tar programs don't know DIRTYPE
-            tarinfo.type = DIRTYPE
-
         self.members.append(tarinfo)
         return tarinfo