Refactor decoder input stream
[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         error->position = 0;
12
13         strncpy(error->source, source, JSON_ERROR_SOURCE_LENGTH);
14         error->source[JSON_ERROR_SOURCE_LENGTH - 1] = '\0';
15     }
16 }
17
18 void jsonp_error_set(json_error_t *error, int line, int column,
19                      size_t position, const char *msg, ...)
20 {
21     va_list ap;
22
23     va_start(ap, msg);
24     jsonp_error_vset(error, line, column, position, msg, ap);
25     va_end(ap);
26 }
27
28 void jsonp_error_vset(json_error_t *error, int line, int column,
29                       size_t position, const char *msg, va_list ap)
30 {
31     if(!error)
32         return;
33
34     if(error->text[0] != '\0') {
35         /* error already set */
36         return;
37     }
38
39     error->line = line;
40     error->column = column;
41     error->position = position;
42
43     vsnprintf(error->text, JSON_ERROR_TEXT_LENGTH, msg, ap);
44 }