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

[PATCH v2 3/6] clean: read user input with strbuf_getline()

From
MNMoritz Neeb <lists@moritzneeb.de>
Date
Feb 22, 2016, 01:20 UTC
Message-ID
<56CA6264.1040400@moritzneeb.de>
In-Reply-To
<56CA5DBB.8040006@moritzneeb.de>

The inputs that are read are all answers that are given by the user when interacting with git on the commandline. As these answers are not supposed to contain a meaningful CR it is safe to replace strbuf_getline_lf() can be replaced by strbuf_getline().

Before the user input was trimmed to remove the CR. This would be now redundant. Another effect of the trimming was that some (accidentally) typed spaces were filtered. But here we want to be consistent with similar UIs like interactive adding, which only accepts space-less input.

For the case of filtering by patterns the input is still trimmed in an untouched codepath after it is split up into multiple patterns. This is considered as desirable, because of two reasons: First this fitering is not part of similar UIs and it is way more likely to accidentally type a space in this way of interacting.

Signed-off-by: Moritz Neeb <lists@moritzneeb.de>
---
When playing around with the interactive git clean I noticed that it is
not possible to have a pattern actually containing a space (i.e. escaping it).
Not sure how relevant this is, because I have no feeling how good the support
and demand for smoothly handling space-containing files in git is.
 builtin/clean.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/builtin/clean.c b/builtin/clean.c
index 7b08237..01cc2ff 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
@@ -570,9 +570,7 @@ static int *list_and_choose(struct menu_opts *opts, struct menu_stuff *stuff)
 			       clean_get_color(CLEAN_COLOR_RESET));
 		}
 -		if (strbuf_getline_lf(&choice, stdin) != EOF) {
-			strbuf_trim(&choice);
-		} else {
+		if (strbuf_getline(&choice, stdin) == EOF) {
 			eof = 1;
 			break;
 		}
@@ -652,9 +650,7 @@ static int filter_by_patterns_cmd(void)
 		clean_print_color(CLEAN_COLOR_PROMPT);
 		printf(_("Input ignore patterns>> "));
 		clean_print_color(CLEAN_COLOR_RESET);
-		if (strbuf_getline_lf(&confirm, stdin) != EOF)
-			strbuf_trim(&confirm);
-		else
+		if (strbuf_getline(&confirm, stdin) == EOF)
 			putchar('\n');
  		/* quit filter_by_pattern mode if press ENTER or Ctrl-D */
@@ -750,9 +746,7 @@ static int ask_each_cmd(void)
 			qname = quote_path_relative(item->string, NULL, &buf);
 			/* TRANSLATORS: Make sure to keep [y/N] as is */
 			printf(_("Remove %s [y/N]? "), qname);
-			if (strbuf_getline_lf(&confirm, stdin) != EOF) {
-				strbuf_trim(&confirm);
-			} else {
+			if (strbuf_getline(&confirm, stdin) == EOF) {
 				putchar('\n');
 				eof = 1;
 			}
-- 
2.7.1.345.gc14003e
Previous: Junio C HamanoNext: Eric Sunshine
Message 9 of 14 in “replacing strbuf_getline_lf() by strbuf_getline() on trimmed input”
  1. 0/6 replacing strbuf_getline_lf() by strbuf_getline() on trimmed inputMoritz Neeb, Feb 22, 2016
  2. 1/6 quote: remove leading space in sq_dequote_stepMoritz Neeb, Feb 22, 2016
  3. 2/6 bisect: read bisect paths with strbuf_getline()Moritz Neeb, Feb 22, 2016
  4. 4/6 notes: read copied notes with strbuf_getline()Moritz Neeb, Feb 22, 2016
  5. Eric SunshineFeb 22, 2016
  6. Junio C HamanoFeb 22, 2016
  7. 6/6 wt-status: read rebase todolist with strbuf_getline()Moritz Neeb, Feb 22, 2016
  8. Junio C HamanoFeb 22, 2016
  9. 3/6 clean: read user input with strbuf_getline()Moritz Neeb, Feb 22, 2016
  10. Eric SunshineFeb 22, 2016
  11. Moritz NeebFeb 22, 2016
  12. Junio C HamanoFeb 22, 2016
  13. 5/6 remote: read $GIT_DIR/branches/* with strbuf_getline()Moritz Neeb, Feb 22, 2016
  14. Junio C HamanoFeb 22, 2016

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.