git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 1/2] quote: let caller reset buffer for quote_path_relative()

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Oct 10, 2012, 13:59 UTC
Message-ID
<1349877544-17648-2-git-send-email-pclouds@gmail.com>
In-Reply-To
<1349877544-17648-1-git-send-email-pclouds@gmail.com>

quote_path_relative() resetting output buffer is sometimes unnecessary as the buffer has never been used, and some other times makes it harder for the caller to use (see builtin/grep.c, the caller has to insert a string after quote_path_relative)

Move the buffer reset back to call sites when necessary.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/clean.c    | 2 ++
 builtin/grep.c     | 2 +-
 builtin/ls-files.c | 1 +
 quote.c            | 1 -
 wt-status.c        | 1 +
 5 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/builtin/clean.c b/builtin/clean.c
index 69c1cda..ff633cc 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
@@ -149,6 +149,7 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
 
 		if (S_ISDIR(st.st_mode)) {
 			strbuf_addstr(&directory, ent->name);
+			strbuf_reset(&buf);
 			qname = quote_path_relative(directory.buf, directory.len, &buf, prefix);
 			if (show_only && (remove_directories ||
 			    (matches == MATCHED_EXACTLY))) {
@@ -171,6 +172,7 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
 		} else {
 			if (pathspec && !matches)
 				continue;
+			strbuf_reset(&buf);
 			qname = quote_path_relative(ent->name, -1, &buf, prefix);
 			if (show_only) {
 				printf(_("Would remove %s\n"), qname);
diff --git a/builtin/grep.c b/builtin/grep.c
index 82530a6..377c904 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -376,9 +376,9 @@ static int grep_sha1(struct grep_opt *opt, const unsigned char *sha1,
 	struct strbuf pathbuf = STRBUF_INIT;
 
 	if (opt->relative && opt->prefix_length) {
+		strbuf_add(&pathbuf, filename, tree_name_len);
 		quote_path_relative(filename + tree_name_len, -1, &pathbuf,
 				    opt->prefix);
-		strbuf_insert(&pathbuf, 0, filename, tree_name_len);
 	} else {
 		strbuf_addstr(&pathbuf, filename);
 	}
diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index b5434af..1e0cae9 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
@@ -395,6 +395,7 @@ int report_path_error(const char *ps_matched, const char **pathspec, const char
 		if (found_dup)
 			continue;
 
+		strbuf_reset(&sb);
 		name = quote_path_relative(pathspec[num], -1, &sb, prefix);
 		error("pathspec '%s' did not match any file(s) known to git.",
 		      name);
diff --git a/quote.c b/quote.c
index 911229f..7e23ba9 100644
--- a/quote.c
+++ b/quote.c
@@ -381,7 +381,6 @@ char *quote_path_relative(const char *in, int len,
 {
 	struct strbuf sb = STRBUF_INIT;
 	const char *rel = path_relative(in, len, &sb, prefix, -1);
-	strbuf_reset(out);
 	quote_c_style_counted(rel, strlen(rel), out, NULL, 0);
 	strbuf_release(&sb);
 
diff --git a/wt-status.c b/wt-status.c
index 2a9658b..be8b600 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -690,6 +690,7 @@ static void wt_status_print_other(struct wt_status *s,
 		struct string_list_item *it;
 		const char *path;
 		it = &(l->items[i]);
+		strbuf_reset(&buf);
 		path = quote_path(it->string, strlen(it->string),
 				  &buf, s->prefix);
 		if (column_active(s->colopts)) {
-- 
1.7.12.1.406.g6ab07c4
Previous: Nguyễn Thái Ngọc DuyNext: Nguyễn Thái Ngọc Duy
Message 27 of 43 in “'git grep needle rev' attempts to access 'rev:.../.gitattributes' in the worktree”
  1. Johannes SixtOct 9, 2012
  2. Nguyen Thai Ngoc DuyOct 9, 2012
  3. Nguyen Thai Ngoc DuyOct 9, 2012
  4. Jeff KingOct 9, 2012
  5. Junio C HamanoOct 9, 2012
  6. Nguyen Thai Ngoc DuyOct 10, 2012
  7. Junio C HamanoOct 10, 2012
  8. Nguyen Thai Ngoc DuyOct 10, 2012
  9. Nguyễn Thái Ngọc DuyOct 10, 2012
  10. 1/3 quote: let caller reset buffer for quote_path_relative()Nguyễn Thái Ngọc Duy, Oct 10, 2012
  11. Junio C HamanoOct 10, 2012
  12. Nguyen Thai Ngoc DuyOct 11, 2012
  13. Junio C HamanoOct 11, 2012
  14. 2/3 grep: pass true path name to grep machineryNguyễn Thái Ngọc Duy, Oct 10, 2012
  15. 3/3 grep: stop looking at random places for .gitattributesNguyễn Thái Ngọc Duy, Oct 10, 2012
  16. Johannes SixtOct 10, 2012
  17. Nguyen Thai Ngoc DuyOct 10, 2012
  18. Johannes SixtOct 10, 2012
  19. Nguyen Thai Ngoc DuyOct 10, 2012
  20. Johannes SixtOct 10, 2012
  21. Nguyen Thai Ngoc DuyOct 10, 2012
  22. Junio C HamanoOct 10, 2012
  23. Johannes SixtOct 11, 2012
  24. Michael HaggertyOct 11, 2012
  25. Nguyen Thai Ngoc DuyOct 11, 2012
  26. 0/2 Re: 'git grep needle rev' attempts to access 'rev:.../.gitattributes' in the worktreeNguyễn Thái Ngọc Duy, Oct 10, 2012
  27. 1/2 quote: let caller reset buffer for quote_path_relative()Nguyễn Thái Ngọc Duy, Oct 10, 2012
  28. 2/2 grep: stop looking at random places for .gitattributesNguyễn Thái Ngọc Duy, Oct 10, 2012
  29. Johannes SixtOct 10, 2012
  30. Junio C HamanoOct 10, 2012
  31. Johannes SixtOct 11, 2012
  32. Junio C HamanoOct 11, 2012
  33. Johannes SixtOct 12, 2012
  34. Junio C HamanoOct 14, 2012
  35. Johannes SixtOct 15, 2012
  36. Junio C HamanoOct 15, 2012
  37. Johannes SixtOct 16, 2012
  38. Johannes SixtOct 17, 2012
  39. Junio C HamanoOct 17, 2012
  40. Nguyen Thai Ngoc DuyOct 11, 2012
  41. Junio C HamanoOct 11, 2012
  42. grep: stop looking at random places for .gitattributesNguyễn Thái Ngọc Duy, Oct 12, 2012
  43. Junio C HamanoOct 12, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.