Issue #20912: Now directories added to ZIP file have correct Unix and MS-DOS
directory attributes.
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index 6722c40..ecdd8a5 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -1150,6 +1150,7 @@
             zinfo.file_size = 0
             zinfo.compress_size = 0
             zinfo.CRC = 0
+            zinfo.external_attr |= 0x10  # MS-DOS directory flag
             self.filelist.append(zinfo)
             self.NameToInfo[zinfo.filename] = zinfo
             self.fp.write(zinfo.FileHeader(False))
@@ -1211,7 +1212,11 @@
                             date_time=time.localtime(time.time())[:6])
 
             zinfo.compress_type = self.compression
-            zinfo.external_attr = 0600 << 16
+            if zinfo.filename[-1] == '/':
+                zinfo.external_attr = 0o40775 << 16   # drwxrwxr-x
+                zinfo.external_attr |= 0x10           # MS-DOS directory flag
+            else:
+                zinfo.external_attr = 0o600 << 16     # ?rw-------
         else:
             zinfo = zinfo_or_arcname