]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
print date precision, too
authorAlan T. DeKok <aland@freeradius.org>
Tue, 21 May 2019 15:07:04 +0000 (11:07 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 21 May 2019 15:07:04 +0000 (11:07 -0400)
src/bin/radict.c
src/lib/util/dict.c
src/lib/util/dict.h

index 01e131c535ccf49f10716afb406a567c6cc04167..3476db5ca586c2f06da27435a536d14eaa8a3be8 100644 (file)
@@ -139,7 +139,7 @@ static void da_print_info_td(fr_dict_t const *dict, fr_dict_attr_t const *da)
 
        (void)fr_dict_print_attr_oid(oid_str, sizeof(oid_str), NULL, da);
 
-       fr_dict_snprint_flags(flags, sizeof(flags), &da->flags);
+       fr_dict_snprint_flags(flags, sizeof(flags), da->type, &da->flags);
 
        /* Protocol Name Type */
        printf("%s\t%s\t%s\t%s\t%s\n", fr_dict_root(dict)->name, oid_str, da->name,
@@ -153,7 +153,7 @@ static void _fr_dict_export(uint64_t *count, uintptr_t *low, uintptr_t *high, fr
        fr_dict_attr_t const    *p;
        char                    flags[256];
 
-       fr_dict_snprint_flags(flags, sizeof(flags), &da->flags);
+       fr_dict_snprint_flags(flags, sizeof(flags), da->type, &da->flags);
 
        /*
         *      Root attributes are allocated outside of the pool
index 7a20d5bb9bd0410d48625a96fe19e98d069f18b8..1d09cd4ffbac2da29b2487f60f866da6429cbec3 100644 (file)
@@ -2441,7 +2441,7 @@ fr_dict_attr_t const *fr_dict_attr_known(fr_dict_t *dict, fr_dict_attr_t const *
        return NULL;
 }
 
-ssize_t fr_dict_snprint_flags(char *out, size_t outlen, fr_dict_attr_flags_t const *flags)
+ssize_t fr_dict_snprint_flags(char *out, size_t outlen, fr_type_t type, fr_dict_attr_flags_t const *flags)
 {
        char *p = out, *end = p + outlen;
        size_t len;
@@ -2477,6 +2477,16 @@ do { \
                if (p >= end) return -1;
        }
 
+       /*
+        *      Print out the date precision.
+        */
+       if (type == FR_TYPE_DATE) {
+               char const *precision = fr_int2str(date_precision_table, flags->type_size, "?");
+
+               p += strlcpy(p, precision, end - p);
+               if (p >= end) return -1;
+       }
+
        if (!out[0]) return -1;
 
        /*
@@ -2494,7 +2504,7 @@ void fr_dict_print(fr_dict_attr_t const *da, int depth)
        unsigned int i;
        char const *name;
 
-       fr_dict_snprint_flags(buff, sizeof(buff), &da->flags);
+       fr_dict_snprint_flags(buff, sizeof(buff), da->type, &da->flags);
 
        switch (da->type) {
        case FR_TYPE_VSA:
@@ -5581,7 +5591,7 @@ static void _fr_dict_dump(fr_dict_attr_t const *da, unsigned int lvl)
        fr_dict_attr_t const    *p;
        char                    flags[256];
 
-       fr_dict_snprint_flags(flags, sizeof(flags), &da->flags);
+       fr_dict_snprint_flags(flags, sizeof(flags), da->type, &da->flags);
 
        printf("[%02i] 0x%016" PRIxPTR "%*s %s(%u) %s %s\n", lvl, (unsigned long)da, lvl * 2, " ",
               da->name, da->attr, fr_int2str(fr_value_box_type_table, da->type, "<INVALID>"), flags);
index ded81b694a9bc8e7a5cb19c0a78884fb22337019..183e8a46c533e4e69a59e41dfb794e39e571ed15 100644 (file)
@@ -254,7 +254,7 @@ fr_dict_attr_t const        *fr_dict_attr_known(fr_dict_t *dict, fr_dict_attr_t const *
  *
  * @{
  */
-ssize_t                        fr_dict_snprint_flags(char *out, size_t outlen, fr_dict_attr_flags_t const *flags);
+ssize_t                        fr_dict_snprint_flags(char *out, size_t outlen, fr_type_t type, fr_dict_attr_flags_t const *flags);
 
 void                   fr_dict_print(fr_dict_attr_t const *da, int depth);