diff options
Diffstat (limited to 'src/Common/libzip/zip_error.c')
-rw-r--r-- | src/Common/libzip/zip_error.c | 89 |
1 files changed, 45 insertions, 44 deletions
diff --git a/src/Common/libzip/zip_error.c b/src/Common/libzip/zip_error.c index 5f4e07dc..c498e086 100644 --- a/src/Common/libzip/zip_error.c +++ b/src/Common/libzip/zip_error.c @@ -1,9 +1,9 @@ /* zip_error.c -- zip_error_t helper functions - Copyright (C) 1999-2016 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2021 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> + The authors can be contacted at <info@libzip.org> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -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 @@ -49,52 +49,49 @@ zip_error_code_zip(const zip_error_t *error) { ZIP_EXTERN void -zip_error_fini(zip_error_t *err) -{ +zip_error_fini(zip_error_t *err) { free(err->str); err->str = NULL; } ZIP_EXTERN void -zip_error_init(zip_error_t *err) -{ +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_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; - } + case ZIP_ET_SYS: + case ZIP_ET_LIBZIP: + 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) + if (error->zip_err < 0 || error->zip_err >= _zip_err_str_count) return ZIP_ET_NONE; - - return _zip_err_type[error->zip_err]; + + return _zip_err_str[error->zip_err].type; } void -_zip_error_clear(zip_error_t *err) -{ +_zip_error_clear(zip_error_t *err) { if (err == NULL) - return; + return; err->zip_err = ZIP_ER_OK; err->sys_err = 0; @@ -102,54 +99,58 @@ _zip_error_clear(zip_error_t *err) void -_zip_error_copy(zip_error_t *dst, const zip_error_t *src) -{ +_zip_error_copy(zip_error_t *dst, const zip_error_t *src) { + if (dst == NULL) { + return; + } + dst->zip_err = src->zip_err; dst->sys_err = src->sys_err; } void -_zip_error_get(const zip_error_t *err, int *zep, int *sep) -{ +_zip_error_get(const zip_error_t *err, int *zep, int *sep) { if (zep) - *zep = err->zip_err; + *zep = err->zip_err; if (sep) { - if (zip_error_system_type(err) != ZIP_ET_NONE) - *sep = err->sys_err; - else - *sep = 0; + if (zip_error_system_type(err) != ZIP_ET_NONE) + *sep = err->sys_err; + else + *sep = 0; } } void -zip_error_set(zip_error_t *err, int ze, int se) -{ +zip_error_set(zip_error_t *err, int ze, int se) { if (err) { - err->zip_err = ze; - err->sys_err = se; + err->zip_err = ze; + err->sys_err = se; } } void -_zip_error_set_from_source(zip_error_t *err, zip_source_t *src) -{ +zip_error_set_from_source(zip_error_t *err, zip_source_t *src) { + if (src == NULL) { + zip_error_set(err, ZIP_ER_INVAL, 0); + return; + } + _zip_error_copy(err, zip_source_error(src)); } zip_int64_t -zip_error_to_data(const zip_error_t *error, void *data, zip_uint64_t length) -{ +zip_error_to_data(const zip_error_t *error, void *data, zip_uint64_t length) { int *e = (int *)data; - - if (length < sizeof(int)*2) { + + 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; + return sizeof(int) * 2; } |