}
for (i = 0; i < count; i++, cp = cf_pair_find_next(cs, cp, rule->name)) {
+ int ret;
cf_parse_t func = cf_pair_parse_value;
if (rule->func) {
+ cf_log_debug(cs, "%.*s%s = %s", PAIR_SPACE(cs), parse_spaces,
+ cf_pair_attr(cp), cp->value);
func = rule->func;
- cf_log_debug(cs, "%.*s%s = %s", PAIR_SPACE(cs), parse_spaces, cf_pair_attr(cp), cp->value);
}
- if (func(ctx, &array[i], cf_pair_to_item(cp), rule) < 0) {
+
+ ret = func(ctx, &array[i], cf_pair_to_item(cp), rule);
+ if (ret < 0) {
talloc_free(array);
talloc_free(dflt_cp);
return -1;
}
+ cp->parsed = true;
}
*(void **)out = array;
* the data pointer directly.
*/
} else {
- CONF_PAIR *next;
- cf_parse_t func = cf_pair_parse_value;
+ CONF_PAIR *next;
+ int ret;
+ cf_parse_t func = cf_pair_parse_value;
cp = cf_pair_find(cs, rule->name);
if (!cp) {
if (deprecated) goto deprecated;
if (rule->func) {
- func = rule->func;
cf_log_debug(cs, "%.*s%s = %s", PAIR_SPACE(cs), parse_spaces, cf_pair_attr(cp), cp->value);
+ func = rule->func;
}
- if (func(ctx, out, cf_pair_to_item(cp), rule) < 0) {
+
+ ret = func(ctx, out, cf_pair_to_item(cp), rule);
+ if (ret < 0) {
talloc_free(dflt_cp);
return -1;
}
+ cp->parsed = true;
}
/*