On 2/10/19 1:34 PM, Stephen Hemminger wrote: > On Sun, 10 Feb 2019 20:28:47 +0200 > Aya Levin <a...@mellanox.com> wrote: > >> This patch prints uint64_t with its corresponding format and avoid implicit >> cast to uint32_t. >> >> Signed-off-by: Aya Levin <a...@mellanox.com> >> Reviewed-by: Moshe Shemesh <mo...@mellanox.com> >> Reported-by: Maria Pasechnik <mar...@mellanox.com> >> --- >> devlink/devlink.c | 9 ++++++++- >> 1 file changed, 8 insertions(+), 1 deletion(-) >> >> diff --git a/devlink/devlink.c b/devlink/devlink.c >> index a05755385a49..46e2e41c5dfd 100644 >> --- a/devlink/devlink.c >> +++ b/devlink/devlink.c >> @@ -1628,7 +1628,14 @@ static void pr_out_u64(struct dl *dl, const char >> *name, uint64_t val) >> if (val == (uint64_t) -1) >> return pr_out_str(dl, name, "unlimited"); >> >> - return pr_out_uint(dl, name, val); >> + if (dl->json_output) { >> + jsonw_u64_field(dl->jw, name, val); >> + } else { >> + if (g_indent_newline) >> + pr_out("%s %lu", name, val); >> + else >> + pr_out(" %s %lu", name, val);
I would expect the compiler to throw a warning when %lu is used for u64's. >> + } >> } >> >> static void pr_out_region_chunk_start(struct dl *dl, uint64_t addr) > > More conditional code adds bloat and is a nuisance. > Why not use print_u64 that already exists. > > I wish devlink used json_print in a more standard manner. > That's a general devlink problem that can be addressed outside of this patch set. It is an example of what I meant by devlink not using more of the infra from the iproute2 code.