[Python-Dev] improved zipimport
Thomas Heller
theller@python.net
Tue, 22 Jul 2003 17:25:29 +0200
Barry Warsaw <barry@python.org> writes:
> On Tue, 2003-07-22 at 10:43, Thomas Heller wrote:
>> Is it too late to get this small patch in?
>>
>> <http://www.python.org/sf/775637>
>>
>> I'm hesitating to raise the priority...
>
> I'm not a zipimport export but the description seems to imply it's a new
> feature not a bug fix.
There are several ways to argue that is *is* a bug fix: zipimport.c
doesn't handle zip files which are no problem for the zipfile module.
zipimport.c, as it is now, looks for the endof_central_dir header
relative to the *end of the file*:
fseek(fp, -22, SEEK_END);
header_end = ftell(fp);
if (fread(endof_central_dir, 1, 22, fp) != 22) {
...
but then goes on positioning relative to the *start of the file*:
fseek(fp, header_offset, 0); /* Start of file header */
l = PyMarshal_ReadLongFromFile(fp);
if (l != 0x02014B50)
break; /* Bad: Central Dir File Header */
OTOH, fixing this 'bug' allows py2exe using the zipimport hook.
Thanks,
Thomas