1 /*
2 * Copyright (c) 2014 - 2019 Oleh Kulykov <info@resident.name>
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 * THE SOFTWARE.
21 */
22
23
24 #include "librws.h"
25 #include "rws_error.h"
26 #include "rws_string.h"
27 #include "rws_memory.h"
28
29
30 // private
rws_error_create(void)31 rws_error rws_error_create(void) {
32 return (rws_error)rws_malloc_zero(sizeof(struct rws_error_struct));
33 }
34
rws_error_new_code_descr(const int code,const char * description)35 rws_error rws_error_new_code_descr(const int code, const char * description) {
36 rws_error e = (rws_error)rws_malloc_zero(sizeof(struct rws_error_struct));
37 e->code = code;
38 e->description = rws_string_copy(description);
39 return e;
40 }
41
rws_error_delete(rws_error error)42 void rws_error_delete(rws_error error) {
43 if (error) {
44 rws_string_delete(error->description);
45 rws_free(error);
46 }
47 }
48
rws_error_delete_clean(rws_error * error)49 void rws_error_delete_clean(rws_error * error) {
50 if (error) {
51 rws_error_delete(*error);
52 *error = NULL;
53 }
54 }
55
56 // public
rws_error_get_code(rws_error error)57 int rws_error_get_code(rws_error error) {
58 return error ? error->code : 0;
59 }
60
rws_error_get_http_error(rws_error error)61 int rws_error_get_http_error(rws_error error) {
62 return error ? error->http_error : 0;
63 }
64
rws_error_get_description(rws_error error)65 const char * rws_error_get_description(rws_error error) {
66 return error ? error->description : NULL;
67 }
68
69