Lines Matching full:parser

593 ucl_parser_get_object (struct ucl_parser *parser)  argument
595 if (parser->state != UCL_STATE_ERROR && parser->top_obj != NULL) {
596 return ucl_object_ref (parser->top_obj);
603 ucl_parser_free (struct ucl_parser *parser) argument
612 if (parser == NULL) {
616 if (parser->top_obj != NULL) {
617 ucl_object_unref (parser->top_obj);
620 if (parser->includepaths != NULL) {
621 ucl_object_unref (parser->includepaths);
624 LL_FOREACH_SAFE (parser->stack, stack, stmp) {
627 HASH_ITER (hh, parser->macroes, macro, mtmp) {
629 HASH_DEL (parser->macroes, macro);
632 LL_FOREACH_SAFE (parser->chunks, chunk, ctmp) {
635 LL_FOREACH_SAFE (parser->keys, key, ktmp) {
638 LL_FOREACH_SAFE (parser->variables, var, vtmp) {
643 LL_FOREACH_SAFE (parser->trash_objs, tr, trtmp) {
647 if (parser->err != NULL) {
648 utstring_free (parser->err);
651 if (parser->cur_file) {
652 free (parser->cur_file);
655 if (parser->comments) {
656 ucl_object_unref (parser->comments);
659 UCL_FREE (sizeof (struct ucl_parser), parser);
663 ucl_parser_get_error(struct ucl_parser *parser) argument
665 if (parser == NULL) {
669 if (parser->err == NULL) {
673 return utstring_body (parser->err);
677 ucl_parser_get_error_code(struct ucl_parser *parser) argument
679 if (parser == NULL) {
683 return parser->err_code;
687 ucl_parser_get_column(struct ucl_parser *parser) argument
689 if (parser == NULL || parser->chunks == NULL) {
693 return parser->chunks->column;
697 ucl_parser_get_linenum(struct ucl_parser *parser) argument
699 if (parser == NULL || parser->chunks == NULL) {
703 return parser->chunks->line;
707 ucl_parser_clear_error(struct ucl_parser *parser) argument
709 if (parser != NULL && parser->err != NULL) {
710 utstring_free(parser->err);
711 parser->err = NULL;
712 parser->err_code = 0;
717 ucl_pubkey_add (struct ucl_parser *parser, const unsigned char *key, size_t len) argument
720 ucl_create_err (&parser->err, "cannot check signatures without openssl");
724 ucl_create_err (&parser->err, "cannot check signatures, openssl version is unsupported");
733 ucl_create_err (&parser->err, "cannot allocate memory for key");
740 ucl_create_err (&parser->err, "%s",
744 LL_PREPEND (parser->keys, nkey);
750 void ucl_parser_add_special_handler (struct ucl_parser *parser, argument
753 LL_APPEND (parser->special_handlers, handler);
937 const unsigned char *sig, size_t siglen, struct ucl_parser *parser) argument
947 LL_FOREACH (parser->keys, key) {
1000 * @param parser
1006 struct ucl_parser *parser, argument
1019 if (!ucl_fetch_url (urlbuf, &buf, &buflen, &parser->err, params->must_exist)) {
1029 if (!ucl_fetch_url (urlbuf, &sigbuf, &siglen, &parser->err, true)) {
1032 if (!ucl_sig_check (buf, buflen, sigbuf, siglen, parser)) {
1033 ucl_create_err (&parser->err, "cannot verify url %s: %s",
1047 prev_state = parser->state;
1048 parser->state = UCL_STATE_INIT;
1050 res = ucl_parser_add_chunk_full (parser, buf, buflen, params->priority,
1054 chunk = parser->chunks;
1056 parser->chunks = chunk->next;
1061 parser->state = prev_state;
1068 * Include a single file to the parser
1071 * @param parser
1080 struct ucl_parser *parser, struct ucl_include_params *params) argument
1104 ucl_create_err (&parser->err, "cannot open file %s: %s",
1110 if (parser->cur_file && strcmp (realbuf, parser->cur_file) == 0) {
1116 ucl_create_err (&parser->err, "trying to include the file %s from itself",
1121 if (!ucl_fetch_file (realbuf, &buf, &buflen, &parser->err, params->must_exist)) {
1126 if (params->must_exist || parser->err != NULL) {
1140 if (!ucl_fetch_file (filebuf, &sigbuf, &siglen, &parser->err, true)) {
1143 if (!ucl_sig_check (buf, buflen, sigbuf, siglen, parser)) {
1144 ucl_create_err (&parser->err, "cannot verify file %s: %s",
1158 old_curfile = parser->cur_file;
1159 parser->cur_file = NULL;
1162 DL_FOREACH_SAFE (parser->variables, cur_var, tmp_var) {
1165 DL_DELETE (parser->variables, cur_var);
1169 DL_DELETE (parser->variables, cur_var);
1173 ucl_parser_set_filevars (parser, realbuf, false);
1175 prev_state = parser->state;
1176 parser->state = UCL_STATE_INIT;
1189 container = parser->stack->obj->value.ov;
1205 parser->flags & UCL_PARSER_KEY_LOWERCASE);
1206 parser->stack->obj->len++;
1220 ucl_create_err (&parser->err,
1237 ucl_create_err (&parser->err,
1254 ucl_create_err (&parser->err,
1278 ucl_create_err (&parser->err, "cannot allocate memory for an object");
1293 parser->flags & UCL_PARSER_KEY_LOWERCASE);
1294 parser->stack->obj->len ++;
1303 ucl_create_err (&parser->err,
1318 parser->stack->obj->value.ov = container;
1322 ucl_create_err (&parser->err, "cannot allocate memory for an object");
1332 st->e.params.level = parser->stack->e.params.level;
1333 st->e.params.flags = parser->stack->e.params.flags;
1334 st->e.params.line = parser->stack->e.params.line;
1335 st->chunk = parser->chunks;
1336 LL_PREPEND (parser->stack, st);
1337 parser->cur_obj = nest_obj;
1340 res = ucl_parser_add_chunk_full (parser, buf, buflen, params->priority,
1346 parser->stack = st->next;
1351 chunk = parser->chunks;
1353 parser->chunks = chunk->next;
1355 parser->recursion--;
1359 if (parser->cur_file) {
1360 free (parser->cur_file);
1363 parser->cur_file = old_curfile;
1364 DL_FOREACH_SAFE (parser->variables, cur_var, tmp_var) {
1366 DL_DELETE (parser->variables, cur_var);
1371 DL_DELETE (parser->variables, cur_var);
1378 DL_APPEND (parser->variables, old_filename);
1381 DL_APPEND (parser->variables, old_curdir);
1384 parser->state = prev_state;
1398 * @param parser
1404 struct ucl_parser *parser, argument
1416 return ucl_include_file_single (data, len, parser, params);
1437 if (parser->include_trace_func) {
1440 if (parser->stack) {
1441 parent = parser->stack->obj;
1444 parser->include_trace_func (parser, parent, NULL,
1447 parser->include_trace_ud);
1451 strlen (globbuf.gl_pathv[i]), parser, params)) {
1463 ucl_create_err (&parser->err, "cannot match any files for pattern %s",
1469 return ucl_include_file_single (data, len, parser, params);
1475 return ucl_include_file_single (data, len, parser, params);
1486 * @param parser
1493 const ucl_object_t *args, struct ucl_parser *parser, argument
1516 if (parser->include_trace_func) {
1519 if (parser->stack) {
1520 parent = parser->stack->obj;
1523 parser->include_trace_func (parser, parent, args,
1524 data, len, parser->include_trace_ud);
1573 ucl_set_include_path (parser, __DECONST(ucl_object_t *, param));
1580 ucl_create_err (&parser->err, "Invalid priority value in macro: %d",
1589 if (parser->includepaths == NULL) {
1592 return ucl_include_url (data, len, parser, &params);
1596 return ucl_include_file (data, len, parser, &params, args);
1602 return ucl_include_url (data, len, parser, &params);
1605 ip = ucl_object_iterate_new (parser->includepaths);
1611 parser, &params, args))) {
1623 ucl_create_err (&parser->err,
1645 struct ucl_parser *parser = ud; local
1647 return ucl_include_common (data, len, args, parser, false, false);
1662 struct ucl_parser *parser = ud; local
1664 return ucl_include_common (data, len, args, parser, false, true);
1679 struct ucl_parser *parser = ud; local
1681 return ucl_include_common (data, len, args, parser, true, false);
1696 struct ucl_parser *parser = ud; local
1703 if (parser == NULL) {
1725 ucl_create_err (&parser->err, "Invalid priority value in macro: %s",
1735 parser->chunks->priority = priority;
1739 ucl_create_err (&parser->err, "Unable to parse priority macro");
1755 struct ucl_parser *parser = ud; local
1783 if (parser == NULL) {
1827 ucl_create_err (&parser->err, "No Key specified in load macro");
1834 ucl_create_err (&parser->err, "cannot allocate memory for suffix");
1841 if (!ucl_fetch_file (load_file, &buf, &buflen, &parser->err,
1849 container = parser->stack->obj;
1854 ucl_create_err (&parser->err, "Key %s already exists", prefix);
1873 ucl_create_err (&parser->err, "Memory allocation failed");
1904 ucl_create_err (&parser->err, "Unable to parse load macro");
1916 struct ucl_parser *parser = ud; local
1922 ucl_create_err (&parser->err, "Unable to find inherited object %*.s",
1927 if (parser->stack == NULL || parser->stack->obj == NULL ||
1928 ucl_object_type (parser->stack->obj) != UCL_OBJECT) {
1929 ucl_create_err (&parser->err, "Invalid inherit context");
1933 target = parser->stack->obj;
1959 ucl_parser_set_filevars (struct ucl_parser *parser, const char *filename, bool need_expand) argument
1973 if (parser->cur_file) {
1974 free (parser->cur_file);
1977 parser->cur_file = strdup (realbuf);
1980 ucl_parser_register_variable (parser, "FILENAME", realbuf);
1982 ucl_parser_register_variable (parser, "CURDIR", curdir);
1987 ucl_parser_register_variable (parser, "FILENAME", "undef");
1988 ucl_parser_register_variable (parser, "CURDIR", curdir);
1995 ucl_parser_add_file_full (struct ucl_parser *parser, const char *filename, argument
2005 ucl_create_err (&parser->err, "cannot open file %s: %s",
2011 if (!ucl_fetch_file (realbuf, &buf, &len, &parser->err, true)) {
2015 ucl_parser_set_filevars (parser, realbuf, false);
2016 ret = ucl_parser_add_chunk_full (parser, buf, len, priority, strat,
2027 ucl_parser_add_file_priority (struct ucl_parser *parser, const char *filename, argument
2030 if (parser == NULL) {
2034 return ucl_parser_add_file_full(parser, filename, priority,
2039 ucl_parser_add_file (struct ucl_parser *parser, const char *filename) argument
2041 if (parser == NULL) {
2045 return ucl_parser_add_file_full(parser, filename,
2046 parser->default_priority, UCL_DUPLICATE_APPEND,
2052 ucl_parser_add_fd_full (struct ucl_parser *parser, int fd, argument
2062 ucl_create_err (&parser->err, "cannot stat fd %d: %s",
2070 ucl_create_err (&parser->err, "cannot mmap fd %d: %s",
2075 if (parser->cur_file) {
2076 free (parser->cur_file);
2078 parser->cur_file = NULL;
2080 ret = ucl_parser_add_chunk_full (parser, buf, len, priority, strat,
2091 ucl_parser_add_fd_priority (struct ucl_parser *parser, int fd, argument
2094 if (parser == NULL) {
2098 return ucl_parser_add_fd_full(parser, fd, parser->default_priority,
2103 ucl_parser_add_fd (struct ucl_parser *parser, int fd) argument
2105 if (parser == NULL) {
2109 return ucl_parser_add_fd_priority(parser, fd, parser->default_priority);
3877 ucl_parser_get_comments (struct ucl_parser *parser) argument
3879 if (parser && parser->comments) {
3880 return parser->comments;
3935 ucl_parser_set_include_tracer (struct ucl_parser *parser, argument
3939 parser->include_trace_func = func;
3940 parser->include_trace_ud = user_data;
3944 ucl_parser_get_cur_file (struct ucl_parser *parser) argument
3946 return parser->cur_file;