| 269 |
} |
} |
| 270 |
if (kwp->kwprefix == NULL) |
if (kwp->kwprefix == NULL) |
| 271 |
errx(1, "unknown keyword '%s'", cp); |
errx(1, "unknown keyword '%s'", cp); |
| 272 |
entry = xmalloc(sizeof (struct parser_res)); |
if (entry_type == KWT_INVALID) |
|
bzero(entry, sizeof (struct parser_res)); |
|
|
entry->keyword = kwp->kwnum; |
|
|
if ((entry->itype = entry_type) == KWT_INVALID) |
|
| 273 |
syntaxerr("internal error: invalid entry type"); |
syntaxerr("internal error: invalid entry type"); |
| 274 |
entry->kw_multi = entry_multi; |
entry = parser_new(kwp->kwnum, entry_type, entry_multi, entry_iter, |
| 275 |
entry->kw_iter = entry_iter; |
str_save(tp)); |
|
entry->value = str_save(tp); |
|
| 276 |
CIRCLEQ_INSERT_TAIL(res, entry, e); |
CIRCLEQ_INSERT_TAIL(res, entry, e); |
| 277 |
free(cp); |
free(cp); |
| 278 |
++lineno; |
++lineno; |
| 381 |
verrx(1, fmt, args); |
verrx(1, fmt, args); |
| 382 |
va_end(args); |
va_end(args); |
| 383 |
} |
} |
| 384 |
|
|
| 385 |
|
struct parser_res * |
| 386 |
|
parser_new(parser_kwords entry_kw, enum parser_kwtype entry_type, |
| 387 |
|
char *entry_multi, unsigned entry_iter, char *value) |
| 388 |
|
{ |
| 389 |
|
struct parser_res *entry; |
| 390 |
|
|
| 391 |
|
entry = xmalloc(sizeof (struct parser_res)); |
| 392 |
|
bzero(entry, sizeof (struct parser_res)); |
| 393 |
|
entry->keyword = entry_kw; |
| 394 |
|
entry->itype = entry_type; |
| 395 |
|
entry->kw_multi = entry_multi; |
| 396 |
|
entry->kw_iter = entry_iter; |
| 397 |
|
entry->value = value; |
| 398 |
|
return (entry); |
| 399 |
|
} |