git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH 1/2] coccinelle: add rules to use strbuf_add() for adding buffers to strbufs
@ 2017-10-01 14:49 René Scharfe
  2017-10-01 14:54 ` [PATCH 2/2] commit: use strbuf_add() to add a buffer to a strbuf René Scharfe
  0 siblings, 1 reply; 3+ messages in thread
From: René Scharfe @ 2017-10-01 14:49 UTC (permalink / raw)
  To: Git List; +Cc: Junio C Hamano

strbuf_addf() can be used with "%.*s" to add a buffer of a specific size
to a strbuf, but the resulting code is longer, may require casting the
length to int and is less efficient than simply calling strbuf_add().
Add Coccinelle rules for transforming calls of the former type to the
latter.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
---
 contrib/coccinelle/strbuf.cocci | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/contrib/coccinelle/strbuf.cocci b/contrib/coccinelle/strbuf.cocci
index 1d580e49b0..700a5f9c13 100644
--- a/contrib/coccinelle/strbuf.cocci
+++ b/contrib/coccinelle/strbuf.cocci
@@ -44,3 +44,15 @@ expression E1, E2;
 @@
 - strbuf_addstr(E1, real_path(E2));
 + strbuf_add_real_path(E1, E2);
+
+@@
+expression sb, buf, len;
+@@
+- strbuf_addf(sb, "%.*s", len, buf)
++ strbuf_add(sb, buf, len)
+
+@@
+expression sb, buf, len;
+@@
+- strbuf_addf(sb, "%.*s", (int)(len), buf)
++ strbuf_add(sb, buf, len)
-- 
2.14.2

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] commit: use strbuf_add() to add a buffer to a strbuf
  2017-10-01 14:49 [PATCH 1/2] coccinelle: add rules to use strbuf_add() for adding buffers to strbufs René Scharfe
@ 2017-10-01 14:54 ` René Scharfe
  2017-10-02  5:18   ` Jeff King
  0 siblings, 1 reply; 3+ messages in thread
From: René Scharfe @ 2017-10-01 14:54 UTC (permalink / raw)
  To: Git List; +Cc: Junio C Hamano

This is shorter, easier and makes the intent clearer.

Patch generated with Coccinelle and contrib/coccinelle/strbuf.cocci.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
---
 builtin/commit.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/commit.c b/builtin/commit.c
index 0f8ddb6866..d186736617 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -542,7 +542,7 @@ static void export_one(const char *var, const char *s, const char *e, int hack)
 	struct strbuf buf = STRBUF_INIT;
 	if (hack)
 		strbuf_addch(&buf, hack);
-	strbuf_addf(&buf, "%.*s", (int)(e - s), s);
+	strbuf_add(&buf, s, e - s);
 	setenv(var, buf.buf, 1);
 	strbuf_release(&buf);
 }
-- 
2.14.2

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 2/2] commit: use strbuf_add() to add a buffer to a strbuf
  2017-10-01 14:54 ` [PATCH 2/2] commit: use strbuf_add() to add a buffer to a strbuf René Scharfe
@ 2017-10-02  5:18   ` Jeff King
  0 siblings, 0 replies; 3+ messages in thread
From: Jeff King @ 2017-10-02  5:18 UTC (permalink / raw)
  To: René Scharfe; +Cc: Git List, Junio C Hamano

On Sun, Oct 01, 2017 at 04:54:14PM +0200, René Scharfe wrote:

> This is shorter, easier and makes the intent clearer.
> 
> Patch generated with Coccinelle and contrib/coccinelle/strbuf.cocci.

Technically this behaves differently if there is a NUL embedded in the
string. I'd expect that to be unlikely in most cases. And when it is
possible, I'd venture to say that the new behavior is likely to be the
correct one.

This case is fine (and any embedded NUL would be cut off by setenv
anyway).  As a general transformation, this is not as obviously safe as
many of the others.  But since we eyeball the output of coccinelle
anyway, it should be fine (and any code which is _relying_ on that
behavior really ought to be rewritten in a less subtle way).

-Peff

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-10-02  5:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-01 14:49 [PATCH 1/2] coccinelle: add rules to use strbuf_add() for adding buffers to strbufs René Scharfe
2017-10-01 14:54 ` [PATCH 2/2] commit: use strbuf_add() to add a buffer to a strbuf René Scharfe
2017-10-02  5:18   ` Jeff King

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).