summaryrefslogtreecommitdiff
path: root/ext/zip/lib/zip_stat_index.c
diff options
context:
space:
mode:
authorRemi Collet <remi@php.net>2013-11-04 13:23:36 +0100
committerRemi Collet <remi@php.net>2013-11-04 13:23:36 +0100
commit5dc37b351085a7b8cdc30ef2ebb349c8e5df4e2c (patch)
tree33357220b91d8553c0978e6392385e0fb8e49028 /ext/zip/lib/zip_stat_index.c
parent2f555b8e606b5f09d635cef4d3fcbcd6939adae2 (diff)
downloadphp-git-5dc37b351085a7b8cdc30ef2ebb349c8e5df4e2c.tar.gz
Sync ext/zip with pecl/zip version 1.3.2
- update libzip to version 1.11.1. We don't use any private symbol anymore - new method ZipArchive::setPassword($password) - add --with-libzip option to build with system libzip
Diffstat (limited to 'ext/zip/lib/zip_stat_index.c')
-rw-r--r--ext/zip/lib/zip_stat_index.c30
1 files changed, 12 insertions, 18 deletions
diff --git a/ext/zip/lib/zip_stat_index.c b/ext/zip/lib/zip_stat_index.c
index 8faa8cc394..f4ce72aaa8 100644
--- a/ext/zip/lib/zip_stat_index.c
+++ b/ext/zip/lib/zip_stat_index.c
@@ -37,16 +37,15 @@
-ZIP_EXTERN(int)
-zip_stat_index(struct zip *za, zip_uint64_t index, int flags,
+ZIP_EXTERN int
+zip_stat_index(struct zip *za, zip_uint64_t index, zip_flags_t flags,
struct zip_stat *st)
{
const char *name;
-
- if (index >= za->nentry) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
+ struct zip_dirent *de;
+
+ if ((de=_zip_get_dirent(za, index, flags, NULL)) == NULL)
return -1;
- }
if ((name=zip_get_name(za, index, flags)) == NULL)
return -1;
@@ -60,20 +59,15 @@ zip_stat_index(struct zip *za, zip_uint64_t index, int flags,
}
}
else {
- if (za->cdir == NULL || index >= za->cdir->nentry) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return -1;
- }
-
zip_stat_init(st);
- st->crc = za->cdir->entry[index].crc;
- st->size = za->cdir->entry[index].uncomp_size;
- st->mtime = za->cdir->entry[index].last_mod;
- st->comp_size = za->cdir->entry[index].comp_size;
- st->comp_method = za->cdir->entry[index].comp_method;
- if (za->cdir->entry[index].bitflags & ZIP_GPBF_ENCRYPTED) {
- if (za->cdir->entry[index].bitflags & ZIP_GPBF_STRONG_ENCRYPTION) {
+ st->crc = de->crc;
+ st->size = de->uncomp_size;
+ st->mtime = de->last_mod;
+ st->comp_size = de->comp_size;
+ st->comp_method = (zip_uint16_t)de->comp_method;
+ if (de->bitflags & ZIP_GPBF_ENCRYPTED) {
+ if (de->bitflags & ZIP_GPBF_STRONG_ENCRYPTION) {
/* XXX */
st->encryption_method = ZIP_EM_UNKNOWN;
}