From: Alan T. DeKok Date: Sun, 23 May 2021 20:40:37 +0000 (-0400) Subject: print quotes, too X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d08921ea0a3e020f0a8d29f4c8ff00fdece2ac0d;p=thirdparty%2Ffreeradius-server.git print quotes, too --- diff --git a/src/lib/util/pair_print.c b/src/lib/util/pair_print.c index e8d3c22b806..58adfceab5d 100644 --- a/src/lib/util/pair_print.c +++ b/src/lib/util/pair_print.c @@ -155,30 +155,20 @@ void fr_pair_fprint(FILE *fp, fr_pair_t const *vp) } -/** Print a list of attributes and enumv - * - * @param[in] log to output to. - * @param[in] lvl depth in structural attribute. - * @param[in] parent parent attribute - * @param[in] list to print. - * @param[in] file where the message originated - * @param[in] line where the message originated - */ -void _fr_pair_list_log(fr_log_t const *log, int lvl, fr_pair_t *parent, fr_pair_list_t const *list, char const *file, int line) +static void fr_pair_list_log_sbuff(fr_log_t const *log, int lvl, fr_pair_t *parent, fr_pair_list_t const *list, char const *file, int line, fr_sbuff_t *sbuff) { fr_pair_t *vp; fr_dict_attr_t const *parent_da = NULL; for (vp = fr_pair_list_head(list); vp; vp = fr_pair_list_next(list, vp)) { - fr_sbuff_t oid_buff; - char buffer[512]; - VP_VERIFY(vp); - fr_sbuff_init(&oid_buff, buffer, sizeof(buffer)); + fr_sbuff_set_to_start(sbuff); + + if (vp->da->flags.is_raw) fr_sbuff_in_strcpy(sbuff, "raw."); if (parent && (parent->da->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_dict_attr_oid_print(sbuff, parent_da, vp->da, false) <= 0) return; /* * Recursively print grouped attributes. @@ -186,18 +176,41 @@ void _fr_pair_list_log(fr_log_t const *log, int lvl, fr_pair_t *parent, fr_pair_ switch (vp->da->type) { case FR_TYPE_STRUCTURAL: fr_log(log, L_DBG, file, line, "%*s%*s {", lvl * 2, "", - (int) fr_sbuff_used(&oid_buff), buffer); + (int) fr_sbuff_used(sbuff), fr_sbuff_start(sbuff)); _fr_pair_list_log(log, lvl + 1, vp, &vp->vp_group, file, line); fr_log(log, L_DBG, file, line, "%*s}", lvl * 2, ""); break; default: - fr_log(log, L_DBG, file, line, "%*s%*s = %pV", lvl * 2, "", - (int) fr_sbuff_used(&oid_buff), buffer, &vp->data); + fr_sbuff_in_strcpy(sbuff, " = "); + fr_value_box_print_quoted(sbuff, &vp->data, T_DOUBLE_QUOTED_STRING); + + fr_log(log, L_DBG, file, line, "%*s%*s", lvl * 2, "", + (int) fr_sbuff_used(sbuff), fr_sbuff_start(sbuff)); } } } + +/** Print a list of attributes and enumv + * + * @param[in] log to output to. + * @param[in] lvl depth in structural attribute. + * @param[in] parent parent attribute + * @param[in] list to print. + * @param[in] file where the message originated + * @param[in] line where the message originated + */ +void _fr_pair_list_log(fr_log_t const *log, int lvl, fr_pair_t *parent, fr_pair_list_t const *list, char const *file, int line) +{ + fr_sbuff_t sbuff; + char buffer[1024]; + + fr_sbuff_init(&sbuff, buffer, sizeof(buffer)); + + return fr_pair_list_log_sbuff(log, lvl, parent, list, file, line, &sbuff); +} + /** Useful for calling from debuggers * */