diff options
author | Remi Collet <remi@fedoraproject.org> | 2015-05-06 14:36:18 +0200 |
---|---|---|
committer | Remi Collet <remi@php.net> | 2015-05-06 15:16:43 +0200 |
commit | 9e0cc7a1d926c1364a834177cadea431cd8b39a7 (patch) | |
tree | f63c505073d6aa0b74bde71eb6a67e6e4c23d8bd /ext/zip/lib/zip_error.c | |
parent | 31f516b4888fcf096fe0912828948bed84f2ad1c (diff) | |
download | php-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.c | 113 |
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; } |