On Wed, 2 May 2018 16:38:52 +0300 Leon Romanovsky wrote: > On Mon, Apr 30, 2018 at 08:25:24AM -0700, Stephen Hemminger wrote: > > On Mon, 30 Apr 2018 07:36:18 -0700 > > Steve Wise wrote: > > > > > +#define nla_type(attr) ((attr)->nla_type & NLA_TYPE_MASK) > > > + > > > +void newline(struct rd *rd) > > > +{ > > > + if (rd->json_output) > > > + jsonw_end_array(rd->jw); > > > + else > > > + pr_out("\n"); > > > +} > > > + > > > +void newline_indent(struct rd *rd) > > > +{ > > > + newline(rd); > > > + if (!rd->json_output) > > > + pr_out(" "); > > > +} > > > + > > > +static int print_provider_string(struct rd *rd, const char *key_str, > > > + const char *val_str) > > > +{ > > > + if (rd->json_output) { > > > + jsonw_string_field(rd->jw, key_str, val_str); > > > + return 0; > > > + } else { > > > + return pr_out("%s %s ", key_str, val_str); > > > + } > > > +} > > > + > > > +static int print_provider_s32(struct rd *rd, const char *key_str, int32_t val, > > > + enum rdma_nldev_print_type print_type) > > > +{ > > > + if (rd->json_output) { > > > + jsonw_int_field(rd->jw, key_str, val); > > > + return 0; > > > + } > > > + switch (print_type) { > > > + case RDMA_NLDEV_PRINT_TYPE_UNSPEC: > > > + return pr_out("%s %d ", key_str, val); > > > + case RDMA_NLDEV_PRINT_TYPE_HEX: > > > + return pr_out("%s 0x%x ", key_str, val); > > > + default: > > > + return -EINVAL; > > > + } > > > +} > > > + > > > > This code should get converted to json_print library that handles the > > different output modes; rather than rolling it's own equivalent functionality. > > Can it be done after this patch is merged? It will simplify review and > testing because current code is implemented to be in the same format as > the rest of the tool. > > Thanks Sure, I was just encouraging future direction.