From: Alan T. DeKok Date: Thu, 15 Jan 2026 16:38:48 +0000 (-0500) Subject: more "squash nested names" X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2d69270463e7aa714df2ab36e466a47b44ad7695;p=thirdparty%2Ffreeradius-server.git more "squash nested names" add it to more code, and correct the output for all code paths. --- diff --git a/src/lib/server/log.c b/src/lib/server/log.c index 28926b0323c..d011ea8ab02 100644 --- a/src/lib/server/log.c +++ b/src/lib/server/log.c @@ -779,7 +779,6 @@ static inline CC_HINT(always_inline) fr_sbuff_t *log_request_oid_buff(void) void log_request_pair(fr_log_lvl_t lvl, request_t *request, fr_pair_t const *parent, fr_pair_t const *vp, char const *prefix) { - fr_dict_attr_t const *parent_da = NULL; fr_sbuff_t *oid_buff; char const *name; @@ -791,23 +790,20 @@ void log_request_pair(fr_log_lvl_t lvl, request_t *request, oid_buff = log_request_oid_buff(); - if (parent && (parent->vp_type != FR_TYPE_GROUP)) parent_da = parent->da; - if (fr_dict_attr_oid_print(oid_buff, parent_da, vp->da, false) <= 0) return; + if (fr_pair_print_name(oid_buff, parent ? parent->da : NULL, &vp) <= 0) return; /* * Recursively print grouped attributes. */ switch (vp->vp_type) { case FR_TYPE_STRUCTURAL: - RDEBUGX(lvl, "%s%pV {", prefix ? prefix : "", - fr_box_strvalue_len(fr_sbuff_start(oid_buff), fr_sbuff_used(oid_buff))); + RDEBUGX(lvl, "%s%s{", prefix ? prefix : "", fr_sbuff_start(oid_buff)); log_request_pair_list(lvl, request, vp, &vp->vp_group, NULL); RDEBUGX(lvl, "}"); break; case FR_TYPE_QUOTED: - RDEBUGX(lvl, "%s%pV = \"%pV\"", prefix ? prefix : "", - fr_box_strvalue_len(fr_sbuff_start(oid_buff), fr_sbuff_used(oid_buff)), + RDEBUGX(lvl, "%s%s\"%pV\"", prefix ? prefix : "", fr_sbuff_start(oid_buff), &vp->data); break; @@ -818,8 +814,7 @@ void log_request_pair(fr_log_lvl_t lvl, request_t *request, * Manually add enum prefix when printing. */ if ((name = fr_value_box_enum_name(&vp->data)) != NULL) { - RDEBUGX(lvl, "%s%pV = ::%s", prefix ? prefix : "", - fr_box_strvalue_len(fr_sbuff_start(oid_buff), fr_sbuff_used(oid_buff)), + RDEBUGX(lvl, "%s::%s", prefix ? prefix : "", fr_sbuff_start(oid_buff), name); break; } diff --git a/src/lib/unlang/edit.c b/src/lib/unlang/edit.c index e8098556336..f16aebbc8eb 100644 --- a/src/lib/unlang/edit.c +++ b/src/lib/unlang/edit.c @@ -231,7 +231,6 @@ static void edit_debug_attr_vp(request_t *request, fr_pair_t const *vp, map_t co } } else { size_t slen; - char const *name; fr_sbuff_t sbuff; char buffer[1024]; @@ -242,16 +241,14 @@ static void edit_debug_attr_vp(request_t *request, fr_pair_t const *vp, map_t co */ if (!RDEBUG_ENABLED3) { slen = fr_pair_print_name(&sbuff, NULL, &vp); - if (slen <= 0) return; - name = buffer; - } else { - name = vp->da->name; + slen = fr_sbuff_in_sprintf(&sbuff, "%s %s ", vp->da->name, fr_tokens[vp->op]); } + if (slen <= 0) return; switch (vp->vp_type) { case FR_TYPE_STRUCTURAL: - RDEBUG2("%s = {", name); + RDEBUG2("%s{", buffer); RINDENT(); edit_debug_attr_list(request, &vp->vp_group, NULL); REXDENT(); @@ -260,7 +257,7 @@ static void edit_debug_attr_vp(request_t *request, fr_pair_t const *vp, map_t co default: if (fr_pair_print_value_quoted(&sbuff, vp, T_DOUBLE_QUOTED_STRING) <= 0) return; - RDEBUG2("%s", fr_sbuff_start(&sbuff)); + RDEBUG2("%s", buffer); break; } } diff --git a/src/lib/unlang/xlat_builtin.c b/src/lib/unlang/xlat_builtin.c index 02629f5a33f..843bab79fda 100644 --- a/src/lib/unlang/xlat_builtin.c +++ b/src/lib/unlang/xlat_builtin.c @@ -134,24 +134,24 @@ static void xlat_debug_attr_vp(request_t *request, fr_pair_t const *vp) fr_table_num_ordered_t const *type; size_t i; ssize_t slen; - char const *name; + fr_sbuff_t sbuff; char buffer[1024]; + sbuff = FR_SBUFF_OUT(buffer, sizeof(buffer)); + /* * Squash the names down if necessary. */ if (!RDEBUG_ENABLED3) { - slen = fr_pair_print_name(&FR_SBUFF_OUT(buffer, sizeof(buffer)), NULL, &vp); - if (slen <= 0) return; - name = buffer; - + slen = fr_pair_print_name(&sbuff, NULL, &vp); } else { - name = vp->da->name; + slen = fr_sbuff_in_sprintf(&sbuff, "%s %s ", vp->da->name, fr_tokens[vp->op]); } + if (slen <= 0) return; switch (vp->vp_type) { case FR_TYPE_STRUCTURAL: - RIDEBUG2("%s = {", name); + RIDEBUG2("%s{", buffer); RINDENT(); xlat_debug_attr_list(request, &vp->vp_group); REXDENT(); @@ -159,7 +159,8 @@ static void xlat_debug_attr_vp(request_t *request, fr_pair_t const *vp) break; default: - RIDEBUG2("%s = %pV", name, &vp->data); + if (fr_pair_print_value_quoted(&sbuff, vp, T_DOUBLE_QUOTED_STRING) <= 0) return; + RIDEBUG2("%s", buffer); } if (!RDEBUG_ENABLED3) return; diff --git a/src/lib/util/pair_print.c b/src/lib/util/pair_print.c index 2cb91a16355..a9d56d075af 100644 --- a/src/lib/util/pair_print.c +++ b/src/lib/util/pair_print.c @@ -357,7 +357,7 @@ static void fr_pair_list_log_sbuff(fr_log_t const *log, int lvl, fr_pair_t const */ switch (child->vp_type) { case FR_TYPE_STRUCTURAL: - fr_log(log, L_DBG, file, line, "%*s%*s {", lvl * 2, "", + fr_log(log, L_DBG, file, line, "%*s%*s{", lvl * 2, "", (int) fr_sbuff_used(sbuff), fr_sbuff_start(sbuff)); _fr_pair_list_log(log, lvl + 1, child, &child->vp_group, file, line); fr_log(log, L_DBG, file, line, "%*s}", lvl * 2, ""); @@ -410,13 +410,13 @@ static void fr_pair_list_debug_sbuff(FILE *fp, int lvl, fr_pair_t const *parent, */ switch (child->vp_type) { case FR_TYPE_STRUCTURAL: - fprintf(fp, "%*s%*s {\n", lvl * 2, "", (int) fr_sbuff_used(sbuff), fr_sbuff_start(sbuff)); + fprintf(fp, "%*s%*s{\n", lvl * 2, "", (int) fr_sbuff_used(sbuff), fr_sbuff_start(sbuff)); _fr_pair_list_debug(fp, lvl + 1, child, &child->vp_group); fprintf(fp, "%*s}\n", lvl * 2, ""); break; default: - if (fr_value_box_print_quoted(sbuff, &child->data, T_DOUBLE_QUOTED_STRING)< 0) break; + if (fr_value_box_print_quoted(sbuff, &child->data, T_DOUBLE_QUOTED_STRING) < 0) break; fprintf(fp, "%*s%*s\n", lvl * 2, "", (int) fr_sbuff_used(sbuff), fr_sbuff_start(sbuff)); }