[Uludag-commits] r16929 - trunk/pisi/pisi

uludag-commits at pardus.org.tr uludag-commits at pardus.org.tr
2 Şub 2008 Cmt 08:03:43 EET


Author: cartman
Date: Sat Feb  2 08:03:27 2008
New Revision: 16929

Modified:
   trunk/pisi/pisi/archive.py
Log:
Support python 2.5



Modified: trunk/pisi/pisi/archive.py
=================================================================
--- trunk/pisi/pisi/archive.py	(original)
+++ trunk/pisi/pisi/archive.py	Sat Feb  2 08:03:27 2008
@@ -19,6 +19,7 @@
 import tarfile
 import zipfile
 import gzip
+import struct
 
 import gettext
 __trans = gettext.translation('pisi', fallback=True)
@@ -212,7 +213,23 @@
                   "Attempt to read ZIP archive that was already closed"
         zinfo = self.getinfo(name)
         filepos = self.fp.tell()
-        self.fp.seek(zinfo.file_offset, 0)
+
+        self.fp.seek(zinfo.header_offset, 0)
+
+        # Skip the file header:
+        fheader = self.fp.read(30)
+        if fheader[0:4] != zipfile.stringFileHeader:
+            raise BadZipfile, "Bad magic number for file header"
+
+        fheader = struct.unpack(zipfile.structFileHeader, fheader)
+        fname = self.fp.read(fheader[zipfile._FH_FILENAME_LENGTH])
+        if fheader[zipfile._FH_EXTRA_FIELD_LENGTH]:
+            self.fp.read(fheader[zipfile._FH_EXTRA_FIELD_LENGTH])
+
+        if fname != zinfo.orig_filename:
+            raise zipfile.BadZipfile, \
+                  'File name in directory "%s" and header "%s" differ.' % (
+                zinfo.orig_filename, fname)
 
         destfile = file(outname, 'wb')
 


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi