From: Alan T. DeKok Date: Thu, 29 Jan 2026 18:34:08 +0000 (-0500) Subject: move to using cf_item_mark_parsed() and cf_item_is_parsed() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a85abb88ef3d1dc5a47fae5a4fef58118f542203;p=thirdparty%2Ffreeradius-server.git move to using cf_item_mark_parsed() and cf_item_is_parsed() --- diff --git a/src/lib/kafka/base.c b/src/lib/kafka/base.c index b72898d9969..1c7681800a9 100644 --- a/src/lib/kafka/base.c +++ b/src/lib/kafka/base.c @@ -191,7 +191,7 @@ static int kafka_config_dflt_single(CONF_PAIR **out, UNUSED void *parent, CONF_S } MEM(*out = cf_pair_alloc(cs, rule->name1, value, T_OP_EQ, T_BARE_WORD, quote)); - cf_pair_mark_parsed(*out); /* Don't re-parse this */ + cf_item_mark_parsed(*out); /* Don't re-parse this */ return 0; } @@ -460,7 +460,7 @@ static int kafka_config_parse(TALLOC_CTX *ctx, UNUSED void *out, UNUSED void *ba cp_p; cp_p = cf_pair_find_next(cs, cp_p, rule->name1), i++) { if (kafka_config_parse_single(&array[i], cp_p, rule) < 0) return -1; - cf_pair_mark_parsed(cp_p); + cf_item_mark_parsed(cp_p); } slen = talloc_array_concat(agg, array, kctx->string_sep); diff --git a/src/lib/server/cf_parse.c b/src/lib/server/cf_parse.c index 8effe2ce965..6c8cdc71d30 100644 --- a/src/lib/server/cf_parse.c +++ b/src/lib/server/cf_parse.c @@ -640,13 +640,13 @@ static int CC_HINT(nonnull(4,5)) cf_pair_parse_internal(TALLOC_CTX *ctx, void *o */ cf_pair_debug_log(cs, cp, rule); - if (cf_pair_is_parsed(cp)) continue; + if (cp->item.parsed) continue; ret = func(value_ctx, entry, base, cf_pair_to_item(cp), rule); if (ret < 0) { talloc_free(array); return -1; } - cf_pair_mark_parsed(cp); + cp->item.parsed = true; } if (array) *(void **)out = array; /* @@ -690,10 +690,10 @@ static int CC_HINT(nonnull(4,5)) cf_pair_parse_internal(TALLOC_CTX *ctx, void *o cf_pair_debug_log(cs, cp, rule); - if (cf_pair_is_parsed(cp)) return 0; + if (cp->item.parsed) return 0; ret = func(ctx, out, base, cf_pair_to_item(cp), rule); if (ret < 0) return -1; - cf_pair_mark_parsed(cp); + cp->item.parsed = true; } return was_dflt ? 1 : 0; diff --git a/src/lib/server/cf_priv.h b/src/lib/server/cf_priv.h index 920897e6b97..13c823e6a15 100644 --- a/src/lib/server/cf_priv.h +++ b/src/lib/server/cf_priv.h @@ -60,6 +60,8 @@ struct cf_item { CONF_ITEM_TYPE type; //!< Whether the config item is a config_pair, conf_section or cf_data. + bool parsed; //!< Was this item used during parsing? + bool referenced; //!< Was this item referenced in the config? int lineno; //!< The line number the config item began on. char const *filename; //!< The file the config item was parsed from. }; @@ -78,9 +80,7 @@ struct cf_pair { fr_token_t rhs_quote; //!< Value Quoting style T_(DOUBLE|SINGLE|BACK)_QUOTE_STRING or T_BARE_WORD. bool pass2; //!< do expansion in pass2. - bool parsed; //!< Was this item used during parsing? bool printed; //!< Was this item printed already in debug mode? - bool referenced; //!< Was this item referenced in the config? }; typedef enum { diff --git a/src/lib/server/cf_util.c b/src/lib/server/cf_util.c index 059b39526a4..b3365bbb1f7 100644 --- a/src/lib/server/cf_util.c +++ b/src/lib/server/cf_util.c @@ -1359,25 +1359,25 @@ int cf_pair_replace(CONF_SECTION *cs, CONF_PAIR *cp, char const *value) } -/** Mark a pair as parsed +/** Mark an item as parsed * - * @param[in] cp to mark as parsed. + * @param[in] ci to mark as parsed. */ -void cf_pair_mark_parsed(CONF_PAIR *cp) +void _cf_item_mark_parsed(CONF_ITEM *ci) { - cp->item.parsed = true; + ci->parsed = true; } -/** Return whether a pair has already been parsed +/** Return whether an item has already been parsed * - * @param[in] cp to check. + * @param[in] ci to check. * @return - * - true if pair has been parsed. + * - true if item has been parsed. * - false if the pair hasn't been parsed. */ -bool cf_pair_is_parsed(CONF_PAIR *cp) +bool _cf_item_is_parsed(CONF_ITEM *ci) { - return cp->item.parsed; + return ci->parsed; } /** Return the first child that's a #CONF_PAIR diff --git a/src/lib/server/cf_util.h b/src/lib/server/cf_util.h index 938cd28518e..ea8875d140b 100644 --- a/src/lib/server/cf_util.h +++ b/src/lib/server/cf_util.h @@ -133,6 +133,12 @@ void _cf_lineno_set(CONF_ITEM *cs, int lineno); void cf_item_free_children(CONF_ITEM *ci); +#define cf_item_mark_parsed(_cf) _cf_item_mark_parsed(CF_TO_ITEM(_cf)) +void _cf_item_mark_parsed(CONF_ITEM *ci); + +#define cf_item_is_parsed(_cf) _cf_item_is_parsed(CF_TO_ITEM(_cf)) +bool _cf_item_is_parsed(CONF_ITEM *ci); + /* * Section manipulation and searching */ @@ -203,10 +209,6 @@ CONF_PAIR *cf_pair_dup(CONF_SECTION *parent, CONF_PAIR *cp, bool copy_meta); int cf_pair_replace(CONF_SECTION *cs, CONF_PAIR *cp, char const *value); -void cf_pair_mark_parsed(CONF_PAIR *cp); - -bool cf_pair_is_parsed(CONF_PAIR *cp); - CONF_PAIR *cf_pair_first(CONF_SECTION const *cs); CONF_PAIR *cf_pair_next(CONF_SECTION const *cs, CONF_PAIR const *curr); diff --git a/src/modules/rlm_sql/sql_state.c b/src/modules/rlm_sql/sql_state.c index bd151fe16e6..4bb2599838f 100644 --- a/src/modules/rlm_sql/sql_state.c +++ b/src/modules/rlm_sql/sql_state.c @@ -186,7 +186,7 @@ int sql_state_entries_from_cs(fr_trie_t *states, CONF_SECTION *cs) entry->rcode = rcode; /* Override previous sql rcode */ } - cf_pair_mark_parsed(cp); /* Make sure it doesn't emit a warning later */ + cf_item_mark_parsed(cp); /* Make sure it doesn't emit a warning later */ } return 0;