aboutsummaryrefslogtreecommitdiffstats
path: root/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/util')
-rw-r--r--src/util/StringUtil.cxx18
-rw-r--r--src/util/StringUtil.hxx22
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.