diff options
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/StringUtil.cxx | 18 | ||||
-rw-r--r-- | src/util/StringUtil.hxx | 22 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/util/StringUtil.cxx b/src/util/StringUtil.cxx index 49a311a5f..bcade2b3b 100644 --- a/src/util/StringUtil.cxx +++ b/src/util/StringUtil.cxx @@ -35,6 +35,24 @@ StripLeft(const char *p) return p; } +const char * +StripLeft(const char *p, const char *end) +{ + while (p < end && IsWhitespaceOrNull(*p)) + ++p; + + return p; +} + +const char * +StripRight(const char *p, const char *end) +{ + while (end > p && IsWhitespaceOrNull(end[-1])) + --end; + + return end; +} + size_t StripRight(const char *p, size_t length) { diff --git a/src/util/StringUtil.hxx b/src/util/StringUtil.hxx index abed3b45b..9beda5441 100644 --- a/src/util/StringUtil.hxx +++ b/src/util/StringUtil.hxx @@ -39,6 +39,28 @@ StripLeft(char *p) return const_cast<char *>(StripLeft((const char *)p)); } +gcc_pure +const char * +StripLeft(const char *p, const char *end); + +/** + * Determine the string's end as if it was stripped on the right side. + */ +gcc_pure +const char * +StripRight(const char *p, const char *end); + +/** + * Determine the string's end as if it was stripped on the right side. + */ +gcc_pure +static inline char * +StripRight(char *p, char *end) +{ + return const_cast<char *>(StripRight((const char *)p, + (const char *)end)); +} + /** * Determine the string's length as if it was stripped on the right * side. |