Resolve __va_list_tag ** -> va_list * type errors with clang and future GCCs
[jansson.git] / src / error.c
1 #include <string.h>
2 #include "jansson_private.h"
3
4 void jsonp_error_init(json_error_t *error, const char *source)
5 {
6     if(error)
7     {
8         error->text[0] = '\0';
9         error->line = -1;
10         error->column = -1;
11
12         strncpy(error->source, source, JSON_ERROR_SOURCE_LENGTH);
13         error->source[JSON_ERROR_SOURCE_LENGTH - 1] = '\0';
14     }
15 }
16
17 void jsonp_error_set(json_error_t *error, int line, int column,
18                      const char *msg, ...)
19 {
20     va_list ap;
21
22     va_start(ap, msg);
23     jsonp_error_vset(error, line, column, msg, ap);
24     va_end(ap);
25 }
26
27 void jsonp_error_vset(json_error_t *error, int line, int column,
28                       const char *msg, va_list ap)
29 {
30     if(!error)
31         return;
32
33     if(error->text[0] != '\0') {
34         /* error already set */
35         return;
36     }
37
38     error->line = line;
39     error->column = column;
40
41     vsnprintf(error->text, JSON_ERROR_TEXT_LENGTH, msg, ap);
42 }