lkml.org 
[lkml]   [2022]   [Aug]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[RFC PATCH 17/30] lib/string.c: strsep_no_empty()
    From
    From: Kent Overstreet <kent.overstreet@linux.dev>

    This adds a new helper which is like strsep, except that it skips empty
    tokens.

    Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
    ---
    include/linux/string.h | 1 +
    lib/string.c | 19 +++++++++++++++++++
    2 files changed, 20 insertions(+)

    diff --git a/include/linux/string.h b/include/linux/string.h
    index 61ec7e4f6311..b950ac9cfa56 100644
    --- a/include/linux/string.h
    +++ b/include/linux/string.h
    @@ -96,6 +96,7 @@ extern char * strpbrk(const char *,const char *);
    #ifndef __HAVE_ARCH_STRSEP
    extern char * strsep(char **,const char *);
    #endif
    +extern char *strsep_no_empty(char **, const char *);
    #ifndef __HAVE_ARCH_STRSPN
    extern __kernel_size_t strspn(const char *,const char *);
    #endif
    diff --git a/lib/string.c b/lib/string.c
    index 6f334420f687..6939f5b751f2 100644
    --- a/lib/string.c
    +++ b/lib/string.c
    @@ -596,6 +596,25 @@ char *strsep(char **s, const char *ct)
    EXPORT_SYMBOL(strsep);
    #endif

    +/**
    + * strsep_no_empt - Split a string into tokens, but don't return empty tokens
    + * @s: The string to be searched
    + * @ct: The characters to search for
    + *
    + * strsep() updates @s to point after the token, ready for the next call.
    + */
    +char *strsep_no_empty(char **s, const char *ct)
    +{
    + char *ret;
    +
    + do {
    + ret = strsep(s, ct);
    + } while (ret && !*ret);
    +
    + return ret;
    +}
    +EXPORT_SYMBOL_GPL(strsep_no_empty);
    +
    #ifndef __HAVE_ARCH_MEMSET
    /**
    * memset - Fill a region of memory with the given value
    --
    2.37.2.672.g94769d06f0-goog
    \
     
     \ /
      Last update: 2022-08-30 23:53    [W:4.165 / U:0.272 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site