The flags are now only used for xlat registrations.
size_t input_len = strlen(in), escaped_len;
fr_sbuff_parse_rules_t p_rules = { .escapes = &fr_value_unescape_double };
- dec_len = xlat_tokenize(cc->tmp_ctx, &head, NULL, &FR_SBUFF_IN(in, input_len), &p_rules,
+ dec_len = xlat_tokenize(cc->tmp_ctx, &head, &FR_SBUFF_IN(in, input_len), &p_rules,
&(tmpl_attr_rules_t) {
.dict_def = cc->tmpl_rules.attr.dict_def ?
cc->tmpl_rules.attr.dict_def : cc->config->dict,
size_t input_len = strlen(in), escaped_len;
// fr_sbuff_parse_rules_t p_rules = { .escapes = &fr_value_unescape_double };
- dec_len = xlat_tokenize_expression(cc->tmp_ctx, &head, NULL, &FR_SBUFF_IN(in, input_len), NULL,
+ dec_len = xlat_tokenize_expression(cc->tmp_ctx, &head, &FR_SBUFF_IN(in, input_len), NULL,
&(tmpl_rules_t) {
.attr = {
.dict_def = cc->tmpl_rules.attr.dict_def ?
xlat_exp_head_t *head = NULL;
size_t input_len = strlen(in), escaped_len;
// fr_sbuff_parse_rules_t p_rules = { .escapes = &fr_value_unescape_double };
- xlat_flags_t flags = {
- .pure = true,
- };
- dec_len = xlat_tokenize_expression(cc->tmp_ctx, &head, &flags, &FR_SBUFF_IN(in, input_len), NULL,
+ dec_len = xlat_tokenize_expression(cc->tmp_ctx, &head, &FR_SBUFF_IN(in, input_len), NULL,
&(tmpl_rules_t) {
.attr = {
.dict_def = cc->tmpl_rules.attr.dict_def ?
xlat_exp_head_t *head = NULL;
fr_sbuff_parse_rules_t p_rules = { .escapes = &fr_value_unescape_double };
- slen = xlat_tokenize_ephemeral(xlat_ctx, &head, el, NULL,
+ slen = xlat_tokenize_ephemeral(xlat_ctx, &head, el,
&FR_SBUFF_IN(fmt, talloc_array_length(fmt) - 1), &p_rules, NULL);
if (slen <= 0) {
talloc_free(xlat_ctx);
char *fmt = talloc_typed_strdup(xlat_ctx, input + 10);
xlat_exp_head_t *head = NULL;
- slen = xlat_tokenize_ephemeral_expression(xlat_ctx, &head, el, NULL,
+ slen = xlat_tokenize_ephemeral_expression(xlat_ctx, &head, el,
&FR_SBUFF_IN(fmt, talloc_array_length(fmt) - 1),
NULL,
&(tmpl_rules_t) {
/*
* xlat expansions should be parseable.
*/
- slen = xlat_tokenize(cs, &xlat, NULL,
+ slen = xlat_tokenize(cs, &xlat,
&FR_SBUFF_IN(cp->value, talloc_array_length(cp->value) - 1), NULL,
&(tmpl_attr_rules_t){
.dict_def = dict,
vpt = tmpl_alloc_null(ctx);
if (!t_rules->at_runtime) {
- slen = xlat_tokenize(vpt, &head, NULL, &our_in, p_rules, &t_rules->attr);
+ slen = xlat_tokenize(vpt, &head, &our_in, p_rules, &t_rules->attr);
} else {
slen = xlat_tokenize_ephemeral(vpt, &head,
- t_rules->xlat.runtime_el, NULL, &our_in,
+ t_rules->xlat.runtime_el, &our_in,
p_rules, t_rules);
}
vpt = tmpl_alloc_null(ctx);
if (!t_rules->at_runtime) {
- slen = xlat_tokenize(vpt, &head, NULL, &our_in, p_rules, &t_rules->attr);
+ slen = xlat_tokenize(vpt, &head, &our_in, p_rules, &t_rules->attr);
} else {
slen = xlat_tokenize_ephemeral(vpt, &head, t_rules->xlat.runtime_el,
- NULL, &our_in, p_rules, t_rules);
+ &our_in, p_rules, t_rules);
}
if (!head) return slen;
vpt = tmpl_alloc_null(ctx);
- slen = xlat_tokenize(vpt, &head, NULL, &our_in, p_rules, &t_rules->attr);
+ slen = xlat_tokenize(vpt, &head, &our_in, p_rules, &t_rules->attr);
if (!head) return slen;
/*
bool xlat_async_required(xlat_exp_head_t const *xlat);
-ssize_t xlat_tokenize_expression(TALLOC_CTX *ctx, xlat_exp_head_t **head, xlat_flags_t *flags, fr_sbuff_t *in,
+ssize_t xlat_tokenize_expression(TALLOC_CTX *ctx, xlat_exp_head_t **head, fr_sbuff_t *in,
fr_sbuff_parse_rules_t const *p_rules, tmpl_rules_t const *t_rules);
ssize_t xlat_tokenize_ephemeral_expression(TALLOC_CTX *ctx, xlat_exp_head_t **head,
fr_event_list_t *el,
- xlat_flags_t *flags, fr_sbuff_t *in,
+ fr_sbuff_t *in,
fr_sbuff_parse_rules_t const *p_rules, tmpl_rules_t const *t_rules);
ssize_t xlat_tokenize_ephemeral(TALLOC_CTX *ctx, xlat_exp_head_t **head,
- fr_event_list_t *el,
- xlat_flags_t *flags, fr_sbuff_t *in,
+ fr_event_list_t *el, fr_sbuff_t *in,
fr_sbuff_parse_rules_t const *p_rules, tmpl_rules_t const *t_rules);
ssize_t xlat_tokenize_argv(TALLOC_CTX *ctx, xlat_exp_head_t **head, fr_sbuff_t *in,
fr_sbuff_parse_rules_t const *p_rules, tmpl_attr_rules_t const *t_rules);
-ssize_t xlat_tokenize(TALLOC_CTX *ctx, xlat_exp_head_t **head, xlat_flags_t *flags, fr_sbuff_t *in,
+ssize_t xlat_tokenize(TALLOC_CTX *ctx, xlat_exp_head_t **head, fr_sbuff_t *in,
fr_sbuff_parse_rules_t const *p_rules, tmpl_attr_rules_t const *t_rules);
ssize_t xlat_print(fr_sbuff_t *in, xlat_exp_head_t const *node, fr_sbuff_escape_rules_t const *e_rules);
* Parse the input as a literal expansion
*/
if (xlat_tokenize_ephemeral(rctx,
- &rctx->ex, unlang_interpret_event_list(request), NULL,
+ &rctx->ex, unlang_interpret_event_list(request),
&FR_SBUFF_IN(arg->vb_strvalue, arg->vb_length),
&(fr_sbuff_parse_rules_t){
.escapes = &escape_rules
/*
* Give better errors than the old code.
*/
- len = xlat_tokenize_ephemeral(ctx, &head, unlang_interpret_event_list(request), NULL,
+ len = xlat_tokenize_ephemeral(ctx, &head, unlang_interpret_event_list(request),
&FR_SBUFF_IN(fmt, strlen(fmt)),
NULL,
&(tmpl_rules_t){
L("<"),
);
-ssize_t xlat_tokenize_expression(TALLOC_CTX *ctx, xlat_exp_head_t **out, xlat_flags_t *flags, fr_sbuff_t *in,
+ssize_t xlat_tokenize_expression(TALLOC_CTX *ctx, xlat_exp_head_t **out, fr_sbuff_t *in,
fr_sbuff_parse_rules_t const *p_rules, tmpl_rules_t const *t_rules)
{
ssize_t slen;
}
*out = head;
- if (flags) xlat_flags_merge(flags, &head->flags);
-
return slen;
}
* @param[in] ctx to allocate dynamic buffers in.
* @param[out] out the head of the xlat list / tree structure.
* @param[in] el for registering any I/O handlers.
- * @param[out] flags indicating the state of the ephemeral tree.
* @param[in] in the format string to expand.
* @param[in] p_rules from the encompassing grammar.
* @param[in] t_rules controlling how attribute references are parsed.
* - <0 the negative offset of the parse failure.
*/
ssize_t xlat_tokenize_ephemeral_expression(TALLOC_CTX *ctx, xlat_exp_head_t **out,
- fr_event_list_t *el,
- xlat_flags_t *flags, fr_sbuff_t *in,
+ fr_event_list_t *el, fr_sbuff_t *in,
fr_sbuff_parse_rules_t const *p_rules, tmpl_rules_t const *t_rules)
{
ssize_t slen;
}
*out = head;
- if (flags) xlat_flags_merge(flags, &head->flags);
return slen;
}
* @param[in] ctx to allocate dynamic buffers in.
* @param[out] out the head of the xlat list / tree structure.
* @param[in] el for registering any I/O handlers.
- * @param[out] flags indicating the state of the ephemeral tree.
* @param[in] in the format string to expand.
* @param[in] p_rules from the encompassing grammar.
* @param[in] t_rules controlling how attribute references are parsed.
* - <0 the negative offset of the parse failure.
*/
ssize_t xlat_tokenize_ephemeral(TALLOC_CTX *ctx, xlat_exp_head_t **out,
- fr_event_list_t *el,
- xlat_flags_t *flags, fr_sbuff_t *in,
+ fr_event_list_t *el, fr_sbuff_t *in,
fr_sbuff_parse_rules_t const *p_rules, tmpl_rules_t const *t_rules)
{
fr_sbuff_t our_in = FR_SBUFF(in);
*/
if (!head->next) {
*out = head;
- if (flags) xlat_flags_merge(flags, &head->flags);
return 0;
}
}
*out = head;
- if (flags) xlat_flags_merge(flags, &head->flags);
return fr_sbuff_set(in, &our_in);
}
*
* @param[in] ctx to allocate dynamic buffers in.
* @param[out] out the head of the xlat list / tree structure.
- * @param[in,out] flags that control evaluation and parsing.
* @param[in] in the format string to expand.
* @param[in] p_rules controlling how the string containing the xlat
* expansions should be parsed.
* - 0 and *head != NULL - Zero length expansion
* - < 0 the negative offset of the parse failure.
*/
-ssize_t xlat_tokenize(TALLOC_CTX *ctx, xlat_exp_head_t **out, xlat_flags_t *flags, fr_sbuff_t *in,
+ssize_t xlat_tokenize(TALLOC_CTX *ctx, xlat_exp_head_t **out, fr_sbuff_t *in,
fr_sbuff_parse_rules_t const *p_rules, tmpl_attr_rules_t const *t_rules)
{
fr_sbuff_t our_in = FR_SBUFF(in);
}
*out = head;
- if (flags) xlat_flags_merge(flags, &head->flags);
return fr_sbuff_set(in, &our_in);
}