From: Hajime Fujita <crisp.fujita@xxxxxxxxx> --- src/pulsecore/core-util.c | 19 +++++++++++++++++++ src/pulsecore/core-util.h | 1 + 2 files changed, 20 insertions(+) diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c index f2999b2..9d571b8 100644 --- a/src/pulsecore/core-util.c +++ b/src/pulsecore/core-util.c @@ -1121,6 +1121,25 @@ char *pa_split_spaces(const char *c, const char **state) { return pa_xstrndup(current, l); } +/* Similar to pa_split_spaces, except this returns a string in-place. + Returned string is generally not NULL-terminated. + See pa_split_in_place(). */ +const char *pa_split_spaces_in_place(const char *c, int *n, const char **state) { + const char *current = *state ? *state : c; + size_t l; + + if (!*current || *c == 0) + return NULL; + + current += strspn(current, WHITESPACE); + l = strcspn(current, WHITESPACE); + + *state = current+l; + + *n = l; + return current; +} + PA_STATIC_TLS_DECLARE(signame, pa_xfree); /* Return the name of an UNIX signal. Similar to Solaris sig2str() */ diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h index be023a8..e28b6aa 100644 --- a/src/pulsecore/core-util.h +++ b/src/pulsecore/core-util.h @@ -112,6 +112,7 @@ static inline const char *pa_strna(const char *x) { char *pa_split(const char *c, const char *delimiters, const char **state); const char *pa_split_in_place(const char *c, const char *delimiters, int *n, const char **state); char *pa_split_spaces(const char *c, const char **state); +const char *pa_split_spaces_in_place(const char *c, int *n, const char **state); char *pa_strip_nl(char *s); char *pa_strip(char *s); -- 2.9.3