]> granicus.if.org Git - php/commit
remove ext/zip dependency entirely, write better native zip support
authorGreg Beaver <cellog@php.net>
Mon, 28 Jan 2008 08:52:08 +0000 (08:52 +0000)
committerGreg Beaver <cellog@php.net>
Mon, 28 Jan 2008 08:52:08 +0000 (08:52 +0000)
commit6cdabede4c1ab363bb9dd3256e1ec9ce7fcfd84b
tree40704bc3c2e788e0770c60b72554f2c571bd57d2
parentc13d9050847a0948467d558724d04ca0c9ee64e0
remove ext/zip dependency entirely, write better native zip support
re-organize, create util.c, move entry_info/archive_data/entry_data access methods to this file
refactor entry->fp, now this is abstracted with phar_get_efp() and phar_seek_efp(), fixes all weird dependency issues
permanently solve the "millions of file pointers" issue for read access.  All compressed files are read into a single
temporary stream, and their constraints are controlled by the entry->fp abstraction

Improvements in this zip implementation over ext/zip:
 * full read/write support for bzip2 compressed files
 * much more efficient access for accessing only a few files within large zip files, as crc/header validation is
   done just-in-time
 * full stream support for opendir/rename/rmdir/mkdir as well as all of the other stream funcs
 * full support for setting file perms via Phar::chmod(), stored as zip-standard extra field
 * no problem with large zips and many open file pointers

# TODO: add big-endian system support for tar/zip file format headers, otherwise the implementation is complete
# TODO: test on windows and fix any windows-specific issues
# TODO: verify zips created work with unzip/winzip/windows explorer and so on
19 files changed:
ext/phar/config.m4
ext/phar/config.w32
ext/phar/dirstream.c
ext/phar/phar.c
ext/phar/phar_internal.h
ext/phar/phar_object.c
ext/phar/pharzip.c [deleted file]
ext/phar/pharzip.h
ext/phar/stream.c
ext/phar/stream.h
ext/phar/tar.c
ext/phar/tests/033.phpt
ext/phar/tests/phar_setalias2.phpt
ext/phar/tests/zip/033.phpt
ext/phar/tests/zip/phar_commitwrite.phpt
ext/phar/tests/zip/phar_convert_phar.phpt
ext/phar/tests/zip/phar_copy.phpt
ext/phar/util.c [new file with mode: 0644]
ext/phar/zip.c