Lines Matching +full:p +full:- +full:state

35 if (p >= end) {                    \
36 if (state != read_ebrace) { \
37 ucl_create_err (&parser->err,\
39 state = parse_err; \
43 switch (*p) { \
45 state = read_obrace; \
48 state = read_ebrace; \
53 state = read_length; \
62 const unsigned char *p, *end; in ucl_parse_csexp() local
73 } state = start_parse; in ucl_parse_csexp() local
76 assert (parser->chunks != NULL); in ucl_parse_csexp()
77 assert (parser->chunks->begin != NULL); in ucl_parse_csexp()
78 assert (parser->chunks->remain != 0); in ucl_parse_csexp()
80 p = parser->chunks->begin; in ucl_parse_csexp()
81 end = p + parser->chunks->remain; in ucl_parse_csexp()
83 while (p < end) { in ucl_parse_csexp()
84 switch (state) { in ucl_parse_csexp()
87 if (*p == '(') { in ucl_parse_csexp()
88 state = read_obrace; in ucl_parse_csexp()
91 ucl_create_err (&parser->err, "bad starting character for " in ucl_parse_csexp()
92 "sexp block: %x", (int)*p); in ucl_parse_csexp()
93 state = parse_err; in ucl_parse_csexp()
101 ucl_create_err (&parser->err, "no memory"); in ucl_parse_csexp()
102 state = parse_err; in ucl_parse_csexp()
106 st->obj = ucl_object_typed_new (UCL_ARRAY); in ucl_parse_csexp()
108 if (st->obj == NULL) { in ucl_parse_csexp()
109 ucl_create_err (&parser->err, "no memory"); in ucl_parse_csexp()
110 state = parse_err; in ucl_parse_csexp()
115 if (parser->stack == NULL) { in ucl_parse_csexp()
117 parser->stack = st; in ucl_parse_csexp()
119 if (parser->top_obj == NULL) { in ucl_parse_csexp()
120 parser->top_obj = st->obj; in ucl_parse_csexp()
125 LL_PREPEND (parser->stack, st); in ucl_parse_csexp()
128 p ++; in ucl_parse_csexp()
134 if (*p == ':') { in ucl_parse_csexp()
136 ucl_create_err (&parser->err, "zero length element"); in ucl_parse_csexp()
137 state = parse_err; in ucl_parse_csexp()
141 state = read_value; in ucl_parse_csexp()
143 else if (*p >= '0' && *p <= '9') { in ucl_parse_csexp()
144 len += (*p - '0') * mult; in ucl_parse_csexp()
148 ucl_create_err (&parser->err, "too big length of an " in ucl_parse_csexp()
150 state = parse_err; in ucl_parse_csexp()
155 ucl_create_err (&parser->err, "bad length character: %x", in ucl_parse_csexp()
156 (int)*p); in ucl_parse_csexp()
157 state = parse_err; in ucl_parse_csexp()
161 p ++; in ucl_parse_csexp()
165 if ((uint64_t)(end - p) > len || len == 0) { in ucl_parse_csexp()
166 ucl_create_err (&parser->err, "invalid length: %llu, %ld " in ucl_parse_csexp()
167 "remain", (long long unsigned)len, (long)(end - p)); in ucl_parse_csexp()
168 state = parse_err; in ucl_parse_csexp()
173 obj->value.sv = (const char*)p; in ucl_parse_csexp()
174 obj->len = len; in ucl_parse_csexp()
175 obj->flags |= UCL_OBJECT_BINARY; in ucl_parse_csexp()
177 if (!(parser->flags & UCL_PARSER_ZEROCOPY)) { in ucl_parse_csexp()
181 ucl_array_append (parser->stack->obj, obj); in ucl_parse_csexp()
182 p += len; in ucl_parse_csexp()
187 if (parser->stack == NULL) { in ucl_parse_csexp()
189 ucl_create_err (&parser->err, "invalid length: %llu, %ld " in ucl_parse_csexp()
190 "remain", (long long unsigned)len, (long)(end - p)); in ucl_parse_csexp()
191 state = parse_err; in ucl_parse_csexp()
195 st = parser->stack; in ucl_parse_csexp()
196 parser->stack = st->next; in ucl_parse_csexp()
198 if (parser->stack->obj->type == UCL_ARRAY) { in ucl_parse_csexp()
199 ucl_array_append (parser->stack->obj, st->obj); in ucl_parse_csexp()
202 ucl_create_err (&parser->err, "bad container object, array " in ucl_parse_csexp()
204 state = parse_err; in ucl_parse_csexp()
210 p++; in ucl_parse_csexp()
220 if (state != read_ebrace) { in ucl_parse_csexp()
221 ucl_create_err (&parser->err, "invalid finishing state: %d", state); in ucl_parse_csexp()