diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-02-21 21:59:53 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-02-21 21:59:53 +0100 |
commit | f1af7a02d12b29a63b5015aaef7f162b3fc7acb4 (patch) | |
tree | a6e74030a4407f4da9a24df90fe2ce7c44866ab9 | |
parent | f8aceafb1321fb2254f6cafea25c14f07a78ad49 (diff) |
core-util: introduce generic function pa_strip()
-rw-r--r-- | src/pulsecore/core-util.c | 28 | ||||
-rw-r--r-- | src/pulsecore/core-util.h | 1 |
2 files changed, 25 insertions, 4 deletions
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c index b64c51e1..323c98d2 100644 --- a/src/pulsecore/core-util.c +++ b/src/pulsecore/core-util.c @@ -126,6 +126,9 @@ #define MSG_NOSIGNAL 0 #endif +#define NEWLINE "\r\n" +#define WHITESPACE "\n\r \t" + static pa_strlist *recorded_env = NULL; #ifdef OS_IS_WIN32 @@ -830,9 +833,6 @@ char *pa_split(const char *c, const char *delimiter, const char**state) { return pa_xstrndup(current, l); } -/* What is interpreted as whitespace? */ -#define WHITESPACE " \t\n" - /* Split a string into words. Otherwise similar to pa_split(). */ char *pa_split_spaces(const char *c, const char **state) { const char *current = *state ? *state : c; @@ -1189,7 +1189,27 @@ int pa_lock_fd(int fd, int b) { char* pa_strip_nl(char *s) { pa_assert(s); - s[strcspn(s, "\r\n")] = 0; + s[strcspn(s, NEWLINE)] = 0; + return s; +} + +char *pa_strip(char *s) { + char *e, *l = NULL; + + /* Drops trailing whitespace. Modifies the string in + * place. Returns pointer to first non-space character */ + + s += strspn(s, WHITESPACE); + + for (e = s; *e; e++) + if (!strchr(WHITESPACE, *e)) + l = e; + + if (l) + *(l+1) = 0; + else + *s = 0; + return s; } diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h index 31a83bcc..0d63cfcb 100644 --- a/src/pulsecore/core-util.h +++ b/src/pulsecore/core-util.h @@ -103,6 +103,7 @@ char *pa_split(const char *c, const char*delimiters, const char **state); char *pa_split_spaces(const char *c, const char **state); char *pa_strip_nl(char *s); +char *pa_strip(char *s); const char *pa_sig2str(int sig) PA_GCC_PURE; |