Rizin
unix-like reverse engineering framework and cli tools
zip_error.c File Reference
#include <stdlib.h>
#include "zipint.h"

Go to the source code of this file.

Functions

ZIP_EXTERN int zip_error_code_system (const zip_error_t *error)
 
ZIP_EXTERN int zip_error_code_zip (const zip_error_t *error)
 
ZIP_EXTERN void zip_error_fini (zip_error_t *err)
 
ZIP_EXTERN void zip_error_init (zip_error_t *err)
 
ZIP_EXTERN void zip_error_init_with_code (zip_error_t *error, int ze)
 
ZIP_EXTERN int zip_error_system_type (const zip_error_t *error)
 
void _zip_error_clear (zip_error_t *err)
 
void _zip_error_copy (zip_error_t *dst, const zip_error_t *src)
 
void _zip_error_get (const zip_error_t *err, int *zep, int *sep)
 
void zip_error_set (zip_error_t *err, int ze, int se)
 
void _zip_error_set_from_source (zip_error_t *err, zip_source_t *src)
 
zip_int64_t zip_error_to_data (const zip_error_t *error, void *data, zip_uint64_t length)
 

Function Documentation

◆ _zip_error_clear()

void _zip_error_clear ( zip_error_t err)

Definition at line 92 of file zip_error.c.

92  {
93  if (err == NULL)
94  return;
95 
96  err->zip_err = ZIP_ER_OK;
97  err->sys_err = 0;
98 }
static bool err
Definition: armass.c:435
#define NULL
Definition: cris-opc.c:27
#define ZIP_ER_OK
Definition: zip.h:105

References err, NULL, and ZIP_ER_OK.

Referenced by _zip_name_locate(), zip_error_clear(), zip_file_error_clear(), and zip_source_open().

◆ _zip_error_copy()

void _zip_error_copy ( zip_error_t dst,
const zip_error_t src 
)

Definition at line 102 of file zip_error.c.

102  {
103  if (dst == NULL) {
104  return;
105  }
106 
107  dst->zip_err = src->zip_err;
108  dst->sys_err = src->sys_err;
109 }
lzma_index * src
Definition: index.h:567
char * dst
Definition: lz4.h:724

References dst, NULL, and src.

Referenced by _zip_error_set_from_source(), _zip_file_exists(), _zip_find_central_dir(), _zip_open(), and zip_source_file_common_new().

◆ _zip_error_get()

void _zip_error_get ( const zip_error_t err,
int zep,
int sep 
)

Definition at line 113 of file zip_error.c.

113  {
114  if (zep)
115  *zep = err->zip_err;
116  if (sep) {
118  *sep = err->sys_err;
119  else
120  *sep = 0;
121  }
122 }
#define ZIP_ET_NONE
Definition: zip.h:141
ZIP_EXTERN int zip_error_system_type(const zip_error_t *error)
Definition: zip_error.c:83

References err, zip_error_system_type(), and ZIP_ET_NONE.

Referenced by zip_error_get(), and zip_file_error_get().

◆ _zip_error_set_from_source()

◆ zip_error_code_system()

ZIP_EXTERN int zip_error_code_system ( const zip_error_t error)

Definition at line 40 of file zip_error.c.

40  {
41  return error->sys_err;
42 }
void error(const char *msg)
Definition: untgz.c:593

References error().

Referenced by _zip_checkcons(), _zip_file_exists(), _zip_find_central_dir(), _zip_read_cdir(), _zip_set_open_error(), do_read(), read_file(), zip_close(), and zip_error_to_data().

◆ zip_error_code_zip()

◆ zip_error_fini()

ZIP_EXTERN void zip_error_fini ( zip_error_t err)

◆ zip_error_init()

◆ zip_error_init_with_code()

ZIP_EXTERN void zip_error_init_with_code ( zip_error_t error,
int  ze 
)

Definition at line 66 of file zip_error.c.

66  {
68  error->zip_err = ze;
69  switch (zip_error_system_type(error)) {
70  case ZIP_ET_SYS:
71  case ZIP_ET_LIBZIP:
72  error->sys_err = errno;
73  break;
74 
75  default:
76  error->sys_err = 0;
77  break;
78  }
79 }
#define ZIP_ET_LIBZIP
Definition: zip.h:144
#define ZIP_ET_SYS
Definition: zip.h:142
ZIP_EXTERN void zip_error_init(zip_error_t *err)
Definition: zip_error.c:59

References error(), zip_error_init(), zip_error_system_type(), ZIP_ET_LIBZIP, and ZIP_ET_SYS.

Referenced by add_from_zip(), cat(), do_read(), list_zip(), main(), and merge_zip().

◆ zip_error_set()

void zip_error_set ( zip_error_t err,
int  ze,
int  se 
)

Definition at line 126 of file zip_error.c.

126  {
127  if (err) {
128  err->zip_err = ze;
129  err->sys_err = se;
130  }
131 }

References err.

Referenced by _zip_add_entry(), _zip_buffer_new_from_source(), _zip_cdir_grow(), _zip_cdir_new(), _zip_cdir_write(), _zip_checkcons(), _zip_cp437_to_utf8(), _zip_crypto_aes_new(), _zip_crypto_hmac_new(), _zip_dirent_process_winzip_aes(), _zip_dirent_read(), _zip_dirent_size(), _zip_dirent_write(), _zip_ef_clone(), _zip_ef_get_by_id(), _zip_ef_parse(), _zip_ef_utf8(), _zip_ef_write(), _zip_file_extra_field_prepare_for_change(), _zip_file_get_end(), _zip_file_get_offset(), _zip_file_new(), _zip_file_replace(), _zip_find_central_dir(), _zip_get_dirent(), _zip_hash_add(), _zip_hash_delete(), _zip_hash_lookup(), _zip_hash_new(), _zip_memdup(), _zip_name_locate(), _zip_new(), _zip_open(), _zip_progress_new(), _zip_read(), _zip_read_cdir(), _zip_read_data(), _zip_read_eocd(), _zip_read_eocd64(), _zip_read_local_ef(), _zip_register_source(), _zip_set_name(), _zip_source_call(), _zip_source_invalidate(), _zip_source_new(), _zip_source_window_new(), _zip_source_zip_new(), _zip_stat_win32(), _zip_stdio_op_commit_write(), _zip_stdio_op_create_temp_output(), _zip_stdio_op_open(), _zip_stdio_op_read(), _zip_stdio_op_remove(), _zip_stdio_op_seek(), _zip_stdio_op_stat(), _zip_stdio_op_tell(), _zip_stdio_op_write(), _zip_string_new(), _zip_unchange(), _zip_win32_named_op_commit_write(), _zip_win32_named_op_create_temp_output(), _zip_win32_named_op_remove(), _zip_win32_named_op_stat(), _zip_win32_named_op_write(), _zip_win32_op_read(), _zip_win32_op_seek(), _zip_win32_op_tell(), _zip_winzip_aes_new(), _zip_write(), add_data(), allocate(), buffer_clone(), buffer_from_file(), buffer_grow_fragments(), buffer_new(), buffer_read_file(), buffer_to_file(), buffer_write(), compress_callback(), compress_read(), compression_source_new(), copy_data(), copy_source(), crc_read(), create_temp_file(), decrypt_header(), do_read(), encrypt_header(), end(), hash_resize(), hole_new(), input(), pkware_decrypt(), pkware_encrypt(), process(), read_data(), read_file(), read_from_file(), read_hole(), read_to_memory(), source_hole_cb(), source_nul(), source_nul_cb(), start(), trad_pkware_new(), verify_hmac(), win32_named_open(), window_read(), winzip_aes_decrypt(), winzip_aes_encrypt(), winzip_aes_new(), write_data_descriptor(), zip_close(), zip_delete(), zip_dir_add(), zip_file_add(), zip_file_extra_field_delete(), zip_file_extra_field_delete_by_id(), zip_file_extra_field_get(), zip_file_extra_field_get_by_id(), zip_file_extra_field_set(), zip_file_extra_fields_count(), zip_file_extra_fields_count_by_id(), zip_file_rename(), zip_file_replace(), zip_file_set_comment(), zip_file_set_encryption(), zip_file_set_external_attributes(), zip_file_set_mtime(), zip_fread(), zip_get_num_files(), zip_open_from_source(), zip_set_archive_comment(), zip_set_archive_flag(), zip_set_default_password(), zip_set_file_comment(), zip_set_file_compression(), zip_source_begin_write(), zip_source_begin_write_cloning(), zip_source_buffer_fragment_with_attributes_create(), zip_source_buffer_with_attributes_create(), zip_source_close(), zip_source_commit_write(), zip_source_crc_create(), zip_source_file_common_new(), zip_source_file_create(), zip_source_filep_create(), zip_source_get_file_attributes(), zip_source_open(), zip_source_pkware_decode(), zip_source_pkware_encode(), zip_source_read(), zip_source_seek(), zip_source_seek_compute_offset(), zip_source_seek_write(), zip_source_stat(), zip_source_tell(), zip_source_tell_write(), zip_source_win32a_create(), zip_source_win32handle_create(), zip_source_win32w_create(), zip_source_winzip_aes_decode(), zip_source_winzip_aes_encode(), zip_source_write(), zip_source_zip_create(), and zip_stat_index().

◆ zip_error_system_type()

ZIP_EXTERN int zip_error_system_type ( const zip_error_t error)

Definition at line 83 of file zip_error.c.

83  {
84  if (error->zip_err < 0 || error->zip_err >= _zip_err_str_count)
85  return ZIP_ET_NONE;
86 
87  return _zip_err_str[error->zip_err].type;
88 }
const struct _zip_err_info _zip_err_str[]
Definition: zip_err_str.c:15
const int _zip_err_str_count
Definition: zip_err_str.c:51

References _zip_err_str, _zip_err_str_count, error(), _zip_err_info::type, and ZIP_ET_NONE.

Referenced by _zip_error_get(), _zip_set_open_error(), and zip_error_init_with_code().

◆ zip_error_to_data()

zip_int64_t zip_error_to_data ( const zip_error_t error,
void *  data,
zip_uint64_t  length 
)

Definition at line 141 of file zip_error.c.

141  {
142  int *e = (int *)data;
143 
144  if (length < sizeof(int) * 2) {
145  return -1;
146  }
147 
148  e[0] = zip_error_code_zip(error);
150  return sizeof(int) * 2;
151 }
#define e(frag)
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len static semflg const void static shmflg const struct timespec struct timespec static rem const char static group const void length
Definition: sflib.h:133
static int
Definition: sfsocketcall.h:114
ZIP_EXTERN int zip_error_code_zip(const zip_error_t *error)
Definition: zip_error.c:46
ZIP_EXTERN int zip_error_code_system(const zip_error_t *error)
Definition: zip_error.c:40

References e, error(), int, length, zip_error_code_system(), and zip_error_code_zip().

Referenced by compress_callback(), crc_read(), pkware_decrypt(), pkware_encrypt(), read_data(), read_file(), source_hole_cb(), source_nul_cb(), window_read(), winzip_aes_decrypt(), and winzip_aes_encrypt().