[PATCH v2 04/12] sysinfo: Make sysinfo_get_str() behave like snprintf()

Simon Glass sjg at chromium.org
Fri Nov 5 17:12:17 CET 2021


Hi Marek,

On Fri, 5 Nov 2021 at 05:19, Marek Behún <kabel at kernel.org> wrote:
>
> On Thu, 4 Nov 2021 20:02:25 -0600
> Simon Glass <sjg at chromium.org> wrote:
>
> > Hi Marek,
> >
> > On Wed, 3 Nov 2021 at 17:23, Marek Behún <kabel at kernel.org> wrote:
> > >
> > > From: Marek Behún <marek.behun at nic.cz>
> > >
> > > Currently sysinfo_get_str() returns 0 if a string is filled in the
> > > given buffer, and otherwise gives no simple mechanism to determine
> > > actual string length.
> > >
> > > One implementation returns -ENOSPC if buffer is not large enough.
> > >
> > > Change the behaviour of the function to that of snprintf(): i.e. the
> > > buffer is always filled in as much as possible if the string exists, and
> > > the function returns the actual length of the string (excluding the
> > > terminating NULL-byte).
> > >
> > > Signed-off-by: Marek Behún <marek.behun at nic.cz>
> > > ---
> > >  board/google/chromebook_coral/coral.c | 13 ++++---------
> > >  common/board_info.c                   |  2 +-
> > >  drivers/sysinfo/gpio.c                |  2 +-
> > >  drivers/sysinfo/rcar3.c               |  2 +-
> > >  drivers/sysinfo/sandbox.c             |  5 +++--
> > >  include/sysinfo.h                     | 16 ++++++++++++----
> > >  lib/smbios.c                          |  2 +-
> > >  test/dm/sysinfo-gpio.c                | 12 ++++++------
> > >  test/dm/sysinfo.c                     | 12 ++++++------
> > >  9 files changed, 35 insertions(+), 31 deletions(-)
> >
> > So how do we know if the size is too small? The string is silently truncated?
>
> The same way as in snprintf.
> If the return value is >= size, then size is too small.
> (The return value is the length of the whole string (excluding \0 at
> end), not just the part that was copied to buffer.)

OK, as on the other patch for where I missed this. It is in the commit
message which I did not read carefully enough, but we need it in the
header file / sphinx docs too.

Regards,
Simon

>
> Marek


More information about the U-Boot mailing list