threads / patch / 36551

patch, 2 partsstrbuf: Use _rtrim and _ltrim in strbuf_trim

Subject: [PATCH 1/2] strbuf: Use _rtrim and _ltrim in strbuf_trim

## tl;dr

3 messages between Apr 30, 2014 and Apr 30, 2014. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Brian Gesiak· Apr 30, 2014, 08:58 UTC · lore

strbuf_trim strips whitespace from the end, then the beginning of a strbuf. Those operations are duplicated in strbuf_rtrim and strbuf_ltrim.

Replace strbuf_trim implementation with calls to strbuf_rtrim, then strbuf_ltrim.

Signed-off-by: Brian Gesiak <modocache@gmail.com>
---

This is tangential to my GSoC project; I noticed the duplication and thought it could be remedied.

 strbuf.c | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)
Show changes to strbuf.c +2 −9
diff --git a/strbuf.c b/strbuf.c
index 83caf4a..382cf68 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -96,15 +96,8 @@ void strbuf_grow(struct strbuf *sb, size_t extra)
 
 void strbuf_trim(struct strbuf *sb)
 {
-	char *b = sb->buf;
-	while (sb->len > 0 && isspace((unsigned char)sb->buf[sb->len - 1]))
-		sb->len--;
-	while (sb->len > 0 && isspace(*b)) {
-		b++;
-		sb->len--;
-	}
-	memmove(sb->buf, b, sb->len);
-	sb->buf[sb->len] = '\0';
+	strbuf_rtrim(sb);
+	strbuf_ltrim(sb);
 }
 void strbuf_rtrim(struct strbuf *sb)
 {
-- 
1.9.2.507.g779792a
Brian Gesiak· Apr 30, 2014, 08:58 UTC · re: Brian Gesiak · lore

[PATCH 2/2] api-strbuf.txt: Add docs for _trim and _ltrim

API documentation for strbuf does not document strbuf_trim or strbuf_ltrim. Add documentation for these two functions.

Signed-off-by: Brian Gesiak <modocache@gmail.com>
---
 Documentation/technical/api-strbuf.txt | 9 +++++++++
 1 file changed, 9 insertions(+)
Show changes to Documentation/technical/api-strbuf.txt +9 −0
diff --git a/Documentation/technical/api-strbuf.txt b/Documentation/technical/api-strbuf.txt
index 3350d97..4396be9 100644
--- a/Documentation/technical/api-strbuf.txt
+++ b/Documentation/technical/api-strbuf.txt
@@ -121,10 +121,19 @@ Functions
 
 * Related to the contents of the buffer
 
+`strbuf_trim`::
+
+	Strip whitespace from the beginning and end of a string.
+	Equivalent to performing `strbuf_rtrim()` followed by `strbuf_ltrim()`.
+
 `strbuf_rtrim`::
 
 	Strip whitespace from the end of a string.
 
+`strbuf_ltrim`::
+
+	Strip whitespace from the beginning of a string.
+
 `strbuf_cmp`::
 
 	Compare two buffers. Returns an integer less than, equal to, or greater
-- 
1.9.2.507.g779792a
Jeff King· Apr 30, 2014, 17:11 UTC · re: Brian Gesiak · lore

Re: [PATCH 1/2] strbuf: Use _rtrim and _ltrim in strbuf_trim

On Wed, Apr 30, 2014 at 05:58:06PM +0900, Brian Gesiak wrote:
Show 6 quoted lines
> strbuf_trim strips whitespace from the end, then the beginning of a
> strbuf. Those operations are duplicated in strbuf_rtrim and
> strbuf_ltrim.
> 
> Replace strbuf_trim implementation with calls to strbuf_rtrim,
> then strbuf_ltrim.

Thanks, this looks good. I wondered if perhaps doing them together inline might have been more efficient, but there really is no overlap in what they compute.

The documentation patch looks good to me, too.
-Peff

← back to recent threads