Lines Matching refs:parser
463 ucl_parser_get_object (struct ucl_parser *parser) argument
465 if (parser->state != UCL_STATE_ERROR && parser->top_obj != NULL) {
466 return ucl_object_ref (parser->top_obj);
473 ucl_parser_free (struct ucl_parser *parser) argument
482 if (parser == NULL) {
486 if (parser->top_obj != NULL) {
487 ucl_object_unref (parser->top_obj);
490 if (parser->includepaths != NULL) {
491 ucl_object_unref (parser->includepaths);
494 LL_FOREACH_SAFE (parser->stack, stack, stmp) {
497 HASH_ITER (hh, parser->macroes, macro, mtmp) {
499 HASH_DEL (parser->macroes, macro);
502 LL_FOREACH_SAFE (parser->chunks, chunk, ctmp) {
505 LL_FOREACH_SAFE (parser->keys, key, ktmp) {
508 LL_FOREACH_SAFE (parser->variables, var, vtmp) {
513 LL_FOREACH_SAFE (parser->trash_objs, tr, trtmp) {
517 if (parser->err != NULL) {
518 utstring_free (parser->err);
521 if (parser->cur_file) {
522 free (parser->cur_file);
525 if (parser->comments) {
526 ucl_object_unref (parser->comments);
529 UCL_FREE (sizeof (struct ucl_parser), parser);
533 ucl_parser_get_error(struct ucl_parser *parser) argument
535 if (parser == NULL) {
539 if (parser->err == NULL) {
543 return utstring_body (parser->err);
547 ucl_parser_get_error_code(struct ucl_parser *parser) argument
549 if (parser == NULL) {
553 return parser->err_code;
557 ucl_parser_get_column(struct ucl_parser *parser) argument
559 if (parser == NULL || parser->chunks == NULL) {
563 return parser->chunks->column;
567 ucl_parser_get_linenum(struct ucl_parser *parser) argument
569 if (parser == NULL || parser->chunks == NULL) {
573 return parser->chunks->line;
577 ucl_parser_clear_error(struct ucl_parser *parser) argument
579 if (parser != NULL && parser->err != NULL) {
580 utstring_free(parser->err);
581 parser->err = NULL;
582 parser->err_code = 0;
587 ucl_pubkey_add (struct ucl_parser *parser, const unsigned char *key, size_t len) argument
590 ucl_create_err (&parser->err, "cannot check signatures without openssl");
594 ucl_create_err (&parser->err, "cannot check signatures, openssl version is unsupported");
603 ucl_create_err (&parser->err, "cannot allocate memory for key");
610 ucl_create_err (&parser->err, "%s",
614 LL_PREPEND (parser->keys, nkey);
792 const unsigned char *sig, size_t siglen, struct ucl_parser *parser) argument
802 LL_FOREACH (parser->keys, key) {
861 struct ucl_parser *parser, argument
874 if (!ucl_fetch_url (urlbuf, &buf, &buflen, &parser->err, params->must_exist)) {
884 if (!ucl_fetch_url (urlbuf, &sigbuf, &siglen, &parser->err, true)) {
887 if (!ucl_sig_check (buf, buflen, sigbuf, siglen, parser)) {
888 ucl_create_err (&parser->err, "cannot verify url %s: %s",
902 prev_state = parser->state;
903 parser->state = UCL_STATE_INIT;
905 res = ucl_parser_add_chunk_full (parser, buf, buflen, params->priority,
909 chunk = parser->chunks;
911 parser->chunks = chunk->next;
916 parser->state = prev_state;
935 struct ucl_parser *parser, struct ucl_include_params *params) argument
958 ucl_create_err (&parser->err, "cannot open file %s: %s",
964 if (parser->cur_file && strcmp (realbuf, parser->cur_file) == 0) {
970 ucl_create_err (&parser->err, "trying to include the file %s from itself",
975 if (!ucl_fetch_file (realbuf, &buf, &buflen, &parser->err, params->must_exist)) {
989 if (!ucl_fetch_file (filebuf, &sigbuf, &siglen, &parser->err, true)) {
992 if (!ucl_sig_check (buf, buflen, sigbuf, siglen, parser)) {
993 ucl_create_err (&parser->err, "cannot verify file %s: %s",
1007 old_curfile = parser->cur_file;
1008 parser->cur_file = strdup (realbuf);
1011 DL_FOREACH_SAFE (parser->variables, cur_var, tmp_var) {
1014 DL_DELETE (parser->variables, cur_var);
1018 DL_DELETE (parser->variables, cur_var);
1022 ucl_parser_set_filevars (parser, realbuf, false);
1024 prev_state = parser->state;
1025 parser->state = UCL_STATE_INIT;
1038 container = parser->stack->obj->value.ov;
1053 parser->flags & UCL_PARSER_KEY_LOWERCASE);
1054 parser->stack->obj->len ++;
1067 ucl_create_err (&parser->err, "cannot allocate memory for an object");
1082 parser->flags & UCL_PARSER_KEY_LOWERCASE);
1083 parser->stack->obj->len ++;
1091 ucl_create_err (&parser->err, "cannot allocate memory for an object");
1107 ucl_create_err (&parser->err, "cannot allocate memory for an object");
1122 ucl_create_err (&parser->err, "cannot allocate memory for an object");
1144 ucl_create_err (&parser->err,
1156 parser->stack->obj->value.ov = container;
1160 ucl_create_err (&parser->err, "cannot allocate memory for an object");
1170 st->level = parser->stack->level;
1171 LL_PREPEND (parser->stack, st);
1172 parser->cur_obj = nest_obj;
1175 res = ucl_parser_add_chunk_full (parser, buf, buflen, params->priority,
1181 utstring_free (parser->err);
1182 parser->err = NULL;
1189 parser->stack = st->next;
1194 chunk = parser->chunks;
1196 parser->chunks = chunk->next;
1198 parser->recursion --;
1202 if (parser->cur_file) {
1203 free (parser->cur_file);
1206 parser->cur_file = old_curfile;
1207 DL_FOREACH_SAFE (parser->variables, cur_var, tmp_var) {
1209 DL_DELETE (parser->variables, cur_var);
1215 DL_DELETE (parser->variables, cur_var);
1222 DL_APPEND (parser->variables, old_filename);
1225 DL_APPEND (parser->variables, old_curdir);
1228 parser->state = prev_state;
1247 struct ucl_parser *parser, struct ucl_include_params *params) argument
1257 return ucl_include_file_single (data, len, parser, params);
1278 strlen (globbuf.gl_pathv[i]), parser, params)) {
1290 ucl_create_err (&parser->err, "cannot match any files for pattern %s",
1296 return ucl_include_file_single (data, len, parser, params);
1302 return ucl_include_file_single (data, len, parser, params);
1320 const ucl_object_t *args, struct ucl_parser *parser, argument
1389 ucl_set_include_path (parser, __DECONST(ucl_object_t *, param));
1400 if (parser->includepaths == NULL) {
1403 return ucl_include_url (data, len, parser, ¶ms);
1407 return ucl_include_file (data, len, parser, ¶ms);
1413 return ucl_include_url (data, len, parser, ¶ms);
1416 ip = ucl_object_iterate_new (parser->includepaths);
1422 parser, ¶ms))) {
1434 ucl_create_err (&parser->err,
1456 struct ucl_parser *parser = ud; local
1458 return ucl_include_common (data, len, args, parser, false, false);
1473 struct ucl_parser *parser = ud; local
1475 return ucl_include_common (data, len, args, parser, false, true);
1490 struct ucl_parser *parser = ud; local
1492 return ucl_include_common (data, len, args, parser, true, false);
1507 struct ucl_parser *parser = ud; local
1514 if (parser == NULL) {
1535 ucl_create_err (&parser->err, "Invalid priority value in macro: %s",
1545 parser->chunks->priority = priority;
1549 ucl_create_err (&parser->err, "Unable to parse priority macro");
1565 struct ucl_parser *parser = ud; local
1593 if (parser == NULL) {
1637 ucl_create_err (&parser->err, "No Key specified in load macro");
1644 ucl_create_err (&parser->err, "cannot allocate memory for suffix");
1651 if (!ucl_fetch_file (load_file, &buf, &buflen, &parser->err,
1659 container = parser->stack->obj;
1664 ucl_create_err (&parser->err, "Key %s already exists", prefix);
1683 ucl_create_err (&parser->err, "Memory allocation failed");
1714 ucl_create_err (&parser->err, "Unable to parse load macro");
1726 struct ucl_parser *parser = ud; local
1732 ucl_create_err (&parser->err, "Unable to find inherited object %*.s",
1737 if (parser->stack == NULL || parser->stack->obj == NULL ||
1738 ucl_object_type (parser->stack->obj) != UCL_OBJECT) {
1739 ucl_create_err (&parser->err, "Invalid inherit context");
1743 target = parser->stack->obj;
1769 ucl_parser_set_filevars (struct ucl_parser *parser, const char *filename, bool need_expand) argument
1784 ucl_parser_register_variable (parser, "FILENAME", realbuf);
1786 ucl_parser_register_variable (parser, "CURDIR", curdir);
1791 ucl_parser_register_variable (parser, "FILENAME", "undef");
1792 ucl_parser_register_variable (parser, "CURDIR", curdir);
1799 ucl_parser_add_file_full (struct ucl_parser *parser, const char *filename, argument
1809 ucl_create_err (&parser->err, "cannot open file %s: %s",
1815 if (!ucl_fetch_file (realbuf, &buf, &len, &parser->err, true)) {
1819 if (parser->cur_file) {
1820 free (parser->cur_file);
1822 parser->cur_file = strdup (realbuf);
1823 ucl_parser_set_filevars (parser, realbuf, false);
1824 ret = ucl_parser_add_chunk_full (parser, buf, len, priority, strat,
1835 ucl_parser_add_file_priority (struct ucl_parser *parser, const char *filename, argument
1838 if (parser == NULL) {
1842 return ucl_parser_add_file_full(parser, filename, priority,
1847 ucl_parser_add_file (struct ucl_parser *parser, const char *filename) argument
1849 if (parser == NULL) {
1853 return ucl_parser_add_file_full(parser, filename,
1854 parser->default_priority, UCL_DUPLICATE_APPEND,
1860 ucl_parser_add_fd_full (struct ucl_parser *parser, int fd, argument
1870 ucl_create_err (&parser->err, "cannot stat fd %d: %s",
1878 ucl_create_err (&parser->err, "cannot mmap fd %d: %s",
1883 if (parser->cur_file) {
1884 free (parser->cur_file);
1886 parser->cur_file = NULL;
1888 ret = ucl_parser_add_chunk_full (parser, buf, len, priority, strat,
1899 ucl_parser_add_fd_priority (struct ucl_parser *parser, int fd, argument
1902 if (parser == NULL) {
1906 return ucl_parser_add_fd_full(parser, fd, parser->default_priority,
1911 ucl_parser_add_fd (struct ucl_parser *parser, int fd) argument
1913 if (parser == NULL) {
1917 return ucl_parser_add_fd_priority(parser, fd, parser->default_priority);
3488 ucl_parser_get_comments (struct ucl_parser *parser) argument
3490 if (parser && parser->comments) {
3491 return parser->comments;