]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
print quotes, too
authorAlan T. DeKok <aland@freeradius.org>
Sun, 23 May 2021 20:40:37 +0000 (16:40 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Sun, 23 May 2021 20:40:37 +0000 (16:40 -0400)
src/lib/util/pair_print.c

index e8d3c22b806b54bd6458dea0c2dfcb26f05c3bd8..58adfceab5d9333fa7d413f20d993e2a94c15460 100644 (file)
@@ -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
  *
  */