summaryrefslogtreecommitdiff
path: root/ext/zip/lib/zip_source_layered.c
diff options
context:
space:
mode:
authorRemi Collet <remi@fedoraproject.org>2015-05-06 14:36:18 +0200
committerRemi Collet <remi@php.net>2015-05-06 15:16:43 +0200
commit9e0cc7a1d926c1364a834177cadea431cd8b39a7 (patch)
treef63c505073d6aa0b74bde71eb6a67e6e4c23d8bd /ext/zip/lib/zip_source_layered.c
parent31f516b4888fcf096fe0912828948bed84f2ad1c (diff)
downloadphp-git-9e0cc7a1d926c1364a834177cadea431cd8b39a7.tar.gz
update libzip to version 1.0.1
Diffstat (limited to 'ext/zip/lib/zip_source_layered.c')
-rw-r--r--ext/zip/lib/zip_source_layered.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/ext/zip/lib/zip_source_layered.c b/ext/zip/lib/zip_source_layered.c
index c53d4fa3da..94b3310109 100644
--- a/ext/zip/lib/zip_source_layered.c
+++ b/ext/zip/lib/zip_source_layered.c
@@ -1,6 +1,6 @@
/*
zip_source_layered.c -- create layered source
- Copyright (C) 2009 Dieter Baron and Thomas Klausner
+ Copyright (C) 2009-2014 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -17,7 +17,7 @@
3. The names of the authors may not be used to endorse or promote
products derived from this software without specific prior
written permission.
-
+
THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -32,28 +32,38 @@
*/
-
#include <stdlib.h>
#include "zipint.h"
-
-struct zip_source *
-zip_source_layered(struct zip *za, struct zip_source *src,
- zip_source_layered_callback cb, void *ud)
+zip_source_t *
+zip_source_layered(zip_t *za, zip_source_t *src, zip_source_layered_callback cb, void *ud)
{
- struct zip_source *zs;
-
if (za == NULL)
- return NULL;
+ return NULL;
+
+ return zip_source_layered_create(src, cb, ud, &za->error);
+}
- if ((zs=_zip_source_new(za)) == NULL)
- return NULL;
+zip_source_t *
+zip_source_layered_create(zip_source_t *src, zip_source_layered_callback cb, void *ud, zip_error_t *error)
+{
+ zip_source_t *zs;
+
+ if ((zs=_zip_source_new(error)) == NULL)
+ return NULL;
+
+ zip_source_keep(src);
zs->src = src;
zs->cb.l = cb;
zs->ud = ud;
+ zs->supports = cb(src, ud, NULL, 0, ZIP_SOURCE_SUPPORTS);
+ if (zs->supports < 0) {
+ zs->supports = ZIP_SOURCE_SUPPORTS_READABLE;
+ }
+
return zs;
}