diff options
Diffstat (limited to 'src/Common/libzip/zip_error_to_str.c')
-rw-r--r-- | src/Common/libzip/zip_error_to_str.c | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/src/Common/libzip/zip_error_to_str.c b/src/Common/libzip/zip_error_to_str.c index 13faf962..b60b7881 100644 --- a/src/Common/libzip/zip_error_to_str.c +++ b/src/Common/libzip/zip_error_to_str.c @@ -1,9 +1,9 @@ /* zip_error_to_str.c -- get string representation of zip error code - Copyright (C) 1999-2019 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 @@ -33,7 +33,6 @@ #include <stdio.h> -#include <stdlib.h> #include <string.h> #define _ZIP_COMPILING_DEPRECATED @@ -42,25 +41,18 @@ ZIP_EXTERN int zip_error_to_str(char *buf, zip_uint64_t len, int ze, int se) { - const char *zs, *ss; + zip_error_t error; + const char *error_string; + int ret; - if (ze < 0 || ze >= _zip_nerr_str) - return snprintf(buf, len, "Unknown error %d", ze); + zip_error_init(&error); + zip_error_set(&error, ze, se); - zs = _zip_err_str[ze]; + error_string = zip_error_strerror(&error); - switch (_zip_err_type[ze]) { - case ZIP_ET_SYS: - ss = strerror(se); - break; + ret = snprintf_s(buf, ZIP_MIN(len, SIZE_MAX), error_string, strlen(error_string)); - case ZIP_ET_ZLIB: - ss = zError(se); - break; + zip_error_fini(&error); - default: - ss = NULL; - } - - return snprintf(buf, len, "%s%s%s", zs, (ss ? ": " : ""), (ss ? ss : "")); + return ret; } |