summaryrefslogtreecommitdiff
path: root/ext/zip/lib/zip_error.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_error.c
parent31f516b4888fcf096fe0912828948bed84f2ad1c (diff)
downloadphp-git-9e0cc7a1d926c1364a834177cadea431cd8b39a7.tar.gz
update libzip to version 1.0.1
Diffstat (limited to 'ext/zip/lib/zip_error.c')
-rw-r--r--ext/zip/lib/zip_error.c113
1 files changed, 77 insertions, 36 deletions
diff --git a/ext/zip/lib/zip_error.c b/ext/zip/lib/zip_error.c
index 9287b968a9..a21a00bc29 100644
--- a/ext/zip/lib/zip_error.c
+++ b/ext/zip/lib/zip_error.c
@@ -1,6 +1,6 @@
/*
- zip_error.c -- struct zip_error helper functions
- Copyright (C) 1999-2015 Dieter Baron and Thomas Klausner
+ zip_error.c -- zip_error_t helper functions
+ Copyright (C) 1999-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
@@ -31,51 +31,92 @@
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-
-
+#include <errno.h>
#include <stdlib.h>
#include "zipint.h"
+ZIP_EXTERN int
+zip_error_code_system(const zip_error_t *error) {
+ return error->sys_err;
+}
-void
-_zip_error_clear(struct zip_error *err)
+
+ZIP_EXTERN int
+zip_error_code_zip(const zip_error_t *error) {
+ return error->zip_err;
+}
+
+
+ZIP_EXTERN void
+zip_error_fini(zip_error_t *err)
{
- if (err == NULL)
- return;
+ free(err->str);
+ err->str = NULL;
+}
+
+ZIP_EXTERN void
+zip_error_init(zip_error_t *err)
+{
err->zip_err = ZIP_ER_OK;
err->sys_err = 0;
+ err->str = NULL;
+}
+
+ZIP_EXTERN void
+zip_error_init_with_code(zip_error_t *error, int ze)
+{
+ zip_error_init(error);
+ error->zip_err = ze;
+ switch (zip_error_system_type(error)) {
+ case ZIP_ET_SYS:
+ error->sys_err = errno;
+ break;
+
+ default:
+ error->sys_err = 0;
+ break;
+ }
}
+ZIP_EXTERN int
+zip_error_system_type(const zip_error_t *error) {
+ if (error->zip_err < 0 || error->zip_err >= _zip_nerr_str)
+ return ZIP_ET_NONE;
+
+ return _zip_err_type[error->zip_err];
+}
+
void
-_zip_error_copy(struct zip_error *dst, const struct zip_error *src)
+_zip_error_clear(zip_error_t *err)
{
- dst->zip_err = src->zip_err;
- dst->sys_err = src->sys_err;
-}
+ if (err == NULL)
+ return;
+ err->zip_err = ZIP_ER_OK;
+ err->sys_err = 0;
+}
void
-_zip_error_fini(struct zip_error *err)
+_zip_error_copy(zip_error_t *dst, const zip_error_t *src)
{
- free(err->str);
- err->str = NULL;
+ dst->zip_err = src->zip_err;
+ dst->sys_err = src->sys_err;
}
-
void
-_zip_error_get(const struct zip_error *err, int *zep, int *sep)
+_zip_error_get(const zip_error_t *err, int *zep, int *sep)
{
if (zep)
*zep = err->zip_err;
if (sep) {
- if (zip_error_get_sys_type(err->zip_err) != ZIP_ET_NONE)
+ if (zip_error_system_type(err) != ZIP_ET_NONE)
*sep = err->sys_err;
else
*sep = 0;
@@ -83,19 +124,8 @@ _zip_error_get(const struct zip_error *err, int *zep, int *sep)
}
-
void
-_zip_error_init(struct zip_error *err)
-{
- err->zip_err = ZIP_ER_OK;
- err->sys_err = 0;
- err->str = NULL;
-}
-
-
-
-void
-_zip_error_set(struct zip_error *err, int ze, int se)
+zip_error_set(zip_error_t *err, int ze, int se)
{
if (err) {
err->zip_err = ze;
@@ -104,12 +134,23 @@ _zip_error_set(struct zip_error *err, int ze, int se)
}
-
void
-_zip_error_set_from_source(struct zip_error *err, struct zip_source *src)
+_zip_error_set_from_source(zip_error_t *err, zip_source_t *src)
{
- int ze, se;
+ _zip_error_copy(err, zip_source_error(src));
+}
- zip_source_error(src, &ze, &se);
- _zip_error_set(err, ze, se);
+
+zip_int64_t
+zip_error_to_data(const zip_error_t *error, void *data, zip_uint64_t length)
+{
+ int *e = (int *)data;
+
+ if (length < sizeof(int)*2) {
+ return -1;
+ }
+
+ e[0] = zip_error_code_zip(error);
+ e[1] = zip_error_code_system(error);
+ return sizeof(int)*2;
}