This source file includes following definitions.
- zip_error_code_system
- zip_error_code_zip
- zip_error_fini
- zip_error_init
- zip_error_init_with_code
- zip_error_system_type
- _zip_error_clear
- _zip_error_copy
- _zip_error_get
- zip_error_set
- _zip_error_set_from_source
- zip_error_to_data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 #include <stdlib.h>
35
36 #include "zipint.h"
37
38
39 ZIP_EXTERN int
40 zip_error_code_system(const zip_error_t *error) {
41 return error->sys_err;
42 }
43
44
45 ZIP_EXTERN int
46 zip_error_code_zip(const zip_error_t *error) {
47 return error->zip_err;
48 }
49
50
51 ZIP_EXTERN void
52 zip_error_fini(zip_error_t *err)
53 {
54 free(err->str);
55 err->str = NULL;
56 }
57
58
59 ZIP_EXTERN void
60 zip_error_init(zip_error_t *err)
61 {
62 err->zip_err = ZIP_ER_OK;
63 err->sys_err = 0;
64 err->str = NULL;
65 }
66
67 ZIP_EXTERN void
68 zip_error_init_with_code(zip_error_t *error, int ze)
69 {
70 zip_error_init(error);
71 error->zip_err = ze;
72 switch (zip_error_system_type(error)) {
73 case ZIP_ET_SYS:
74 error->sys_err = errno;
75 break;
76
77 default:
78 error->sys_err = 0;
79 break;
80 }
81 }
82
83
84 ZIP_EXTERN int
85 zip_error_system_type(const zip_error_t *error) {
86 if (error->zip_err < 0 || error->zip_err >= _zip_nerr_str)
87 return ZIP_ET_NONE;
88
89 return _zip_err_type[error->zip_err];
90 }
91
92
93 void
94 _zip_error_clear(zip_error_t *err)
95 {
96 if (err == NULL)
97 return;
98
99 err->zip_err = ZIP_ER_OK;
100 err->sys_err = 0;
101 }
102
103
104 void
105 _zip_error_copy(zip_error_t *dst, const zip_error_t *src)
106 {
107 dst->zip_err = src->zip_err;
108 dst->sys_err = src->sys_err;
109 }
110
111
112 void
113 _zip_error_get(const zip_error_t *err, int *zep, int *sep)
114 {
115 if (zep)
116 *zep = err->zip_err;
117 if (sep) {
118 if (zip_error_system_type(err) != ZIP_ET_NONE)
119 *sep = err->sys_err;
120 else
121 *sep = 0;
122 }
123 }
124
125
126 void
127 zip_error_set(zip_error_t *err, int ze, int se)
128 {
129 if (err) {
130 err->zip_err = ze;
131 err->sys_err = se;
132 }
133 }
134
135
136 void
137 _zip_error_set_from_source(zip_error_t *err, zip_source_t *src)
138 {
139 _zip_error_copy(err, zip_source_error(src));
140 }
141
142
143 zip_int64_t
144 zip_error_to_data(const zip_error_t *error, void *data, zip_uint64_t length)
145 {
146 int *e = (int *)data;
147
148 if (length < sizeof(int)*2) {
149 return -1;
150 }
151
152 e[0] = zip_error_code_zip(error);
153 e[1] = zip_error_code_system(error);
154 return sizeof(int)*2;
155 }