[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