]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
backport 1.15
authorAnthony Baxter <anthonybaxter@gmail.com>
Wed, 5 Dec 2001 06:46:16 +0000 (06:46 +0000)
committerAnthony Baxter <anthonybaxter@gmail.com>
Wed, 5 Dec 2001 06:46:16 +0000 (06:46 +0000)
Make sure path names inserted into ZIP files are normalized to use "/" as
the directory separator, as required by the format specification.
This closes SF bug #440693.

Lib/zipfile.py

index 74095e2509214dbbd08c36f4d9d071b4bf3f48de..23a6b1b8ef62a818557399cc344cfaefa8069540 100644 (file)
@@ -89,7 +89,7 @@ class ZipInfo:
     """Class with attributes describing each file in the ZIP archive."""
 
     def __init__(self, filename="NoName", date_time=(1980,1,1,0,0,0)):
-        self.filename = filename        # Name of the file in the archive
+        self.filename = _normpath(filename) # Name of the file in the archive
         self.date_time = date_time      # year, month, day, hour, min, sec
         # Standard values:
         self.compress_type = ZIP_STORED # Type of compression for the file
@@ -130,6 +130,17 @@ class ZipInfo:
         return header + self.filename + self.extra
 
 
+# This is used to ensure paths in generated ZIP files always use
+# forward slashes as the directory separator, as required by the
+# ZIP format specification.
+if os.sep != "/":
+    def _normpath(path):
+        return path.replace(os.sep, "/")
+else:
+    def _normpath(path):
+        return path
+
+
 class ZipFile:
     """ Class with methods to open, read, write, close, list zip files.