[PATCH v3 04/31] lib: Add a way to find the postiion of a trailing number

Simon Glass sjg at chromium.org
Sun Mar 6 04:08:21 CET 2022


Hi Takahiro,

On Wed, 19 Jan 2022 at 20:16, AKASHI Takahiro
<takahiro.akashi at linaro.org> wrote:
>
> On Wed, Jan 19, 2022 at 12:27:09PM +0100, Heinrich Schuchardt wrote:
> > On 1/19/22 02:42, Simon Glass wrote:
> > > At present it is not possible to find out which part of the string is the
> > > number part and which is before it. Add a new variant which provides this
> > > feature, so we can separate the two in the caller.
> > >
> > > Signed-off-by: Simon Glass <sjg at chromium.org>
> > > ---
> > >
> > > Changes in v3:
> > > - Change the function to return a pointer to the first digit
> > > - Add some tests, including one for 'abc123def456'
> > >
> > >   include/vsprintf.h | 18 ++++++++++++++++++
> > >   lib/strto.c        | 14 ++++++++++++--
> > >   test/str_ut.c      | 13 ++++++++++++-
> > >   3 files changed, 42 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/include/vsprintf.h b/include/vsprintf.h
> > > index 01d2248e04d..ce7a7aaa1cc 100644
> > > --- a/include/vsprintf.h
> > > +++ b/include/vsprintf.h
> > > @@ -118,6 +118,24 @@ long trailing_strtol(const char *str);
> > >    */
> > >   long trailing_strtoln(const char *str, const char *end);
> > >
> > > +/**
> > > + * trailing_strtoln_end() - extract trailing integer from a fixed-length string
> > > + *
> > > + * Given a fixed-length string this finds a trailing number on the string
> > > + * and returns it. For example, "abc123" would return 123. Only the
> > > + * characters between @str and @end - 1 are examined. If @end is NULL, it is
> > > + * set to str + strlen(str).
> > > + *
> > > + * @str:   String to exxamine
> > > + * @end:   Pointer to end of string to examine, or NULL to use the
> > > + *         whole string
> > > + * @endp:  If non-NULL, this is set to point to the character where the
> > > + * number starts, e.g. for "mmc0" this would be point to the '0'; if no
> > > + * trailing number is found, it is set to the end of the string
> > > + * @return training number if found, else -1
> >
> > Return:
> >
> > https://www.kernel.org/doc/html/latest/doc-guide/kernel-doc.html#function-documentation
>
> One of other common mistakes(?) that I can see in the repository is
> a violation of the rule below:
> ===8<===
> Function parameters
> ~~~~~~~~~~~~~~~~~~~
>
> Each function argument should be described in order, immediately following
>                                                      ^^^^^^^^^^^^^^^^^^^^^
> the short function description.  Do not leave a blank line between the
> function description and the arguments, nor between the arguments.
> ===>8===
>
> For instance, in this patch,
> > > +/**
> > > + * trailing_strtoln_end() - extract trailing integer from a fixed-length string
> > > + *
> > > + * Given a fixed-length string this finds a trailing number on the string
> > > + * and returns it. For example, "abc123" would return 123. Only the
> > > + * characters between @str and @end - 1 are examined. If @end is NULL, it is
> > > + * set to str + strlen(str).
> > > + *
> > > + * @str:   String to exxamine
> (snip)
>
> The structure of trailing_strtoln_end() looks like:
>   <short function description>
>   <blank line>
>   <long function description>
>   <blank line>
>   <function arguments>
>
> Doesn't this matter so far in formatting Sphinx texts?

It doesn't seem to, luckily. I'm not too impressed with how simplistic
Sphinx is with formatting, but it seems OK in that case.

Regards,
Simon


More information about the U-Boot mailing list