git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Moritz Neeb <lists@moritzneeb.de>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>
Subject: [PATCH v2 3/6] clean: read user input with strbuf_getline()
Date: Mon, 22 Feb 2016 02:20:36 +0100	[thread overview]
Message-ID: <56CA6264.1040400@moritzneeb.de> (raw)
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

  parent reply	other threads:[~2016-02-22  1:24 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-30 17:51 [PATCH 0/5] Replacing strbuf_getline_lf() by strbuf_getline() on trimmed input Moritz Neeb
2016-01-30 18:03 ` [PATCH 1/5] bisect: read bisect paths with strbuf_getline() Moritz Neeb
2016-02-01 21:30   ` Junio C Hamano
2016-02-14 21:01     ` Moritz Neeb
2016-02-15  5:05       ` Junio C Hamano
2016-02-21 23:48         ` Moritz Neeb
2016-02-22  0:07         ` Moritz Neeb
2016-01-30 18:04 ` [PATCH 2/5] clean: read user input " Moritz Neeb
2016-02-01 21:30   ` Junio C Hamano
2016-01-30 18:05 ` [PATCH 3/5] notes: read copied notes " Moritz Neeb
2016-02-01 21:34   ` Junio C Hamano
2016-01-30 18:05 ` [PATCH 4/5] remote: read $GIT_DIR/branches/* " Moritz Neeb
2016-01-30 18:05 ` [PATCH 5/5] wt-status: read rebase todolist " Moritz Neeb
2016-02-01 21:39   ` Junio C Hamano
2016-02-22  1:00 ` [PATCH v2 0/6] replacing strbuf_getline_lf() by strbuf_getline() on trimmed input Moritz Neeb
2016-02-22  1:15   ` [PATCH v2 1/6] quote: remove leading space in sq_dequote_step Moritz Neeb
2016-02-22  1:15   ` [PATCH v2 2/6] bisect: read bisect paths with strbuf_getline() Moritz Neeb
2016-02-22  1:16   ` [PATCH v2 4/6] notes: read copied notes " Moritz Neeb
2016-02-22  2:41     ` Eric Sunshine
2016-02-22 19:27       ` Junio C Hamano
2016-02-22  1:17   ` [PATCH v2 6/6] wt-status: read rebase todolist " Moritz Neeb
2016-02-22 19:30     ` Junio C Hamano
2016-02-22  1:20   ` Moritz Neeb [this message]
2016-02-22  2:27     ` [PATCH v2 3/6] clean: read user input " Eric Sunshine
2016-02-22  7:40       ` Moritz Neeb
2016-02-22 19:40       ` Junio C Hamano
2016-02-22  1:22   ` [PATCH v2 5/6] remote: read $GIT_DIR/branches/* " Moritz Neeb
2016-02-22 19:09     ` Junio C Hamano
2016-02-28  5:07   ` [PATCH v3 0/7] replacing strbuf_getline_lf() by strbuf_getline() Moritz Neeb
2016-02-28  5:13     ` [PATCH v3 1/7] quote: remove leading space in sq_dequote_step Moritz Neeb
2016-02-28  5:13     ` [PATCH v3 2/7] bisect: read bisect paths with strbuf_getline() Moritz Neeb
2016-02-28  6:33       ` Eric Sunshine
2016-02-28  7:30         ` Moritz Neeb
2016-02-28  5:13     ` [PATCH v3 3/7] clean: read user input " Moritz Neeb
2016-02-28  6:36       ` Eric Sunshine
2016-02-28  7:36         ` Moritz Neeb
2016-02-28  5:13     ` [PATCH v3 4/7] notes copy --stdin: split lines with string_list_split() Moritz Neeb
2016-02-28  6:56       ` Eric Sunshine
2016-02-28  7:47         ` Moritz Neeb
2016-02-28 16:02           ` Eric Sunshine
2016-02-28  5:13     ` [PATCH v3 5/7] notes copy --stdin: read lines with strbuf_getline() Moritz Neeb
2016-02-28  5:14     ` [PATCH v3 6/7] remote: read $GIT_DIR/branches/* " Moritz Neeb
2016-02-28  5:14     ` [PATCH v3 7/7] wt-status: read rebase todolist " Moritz Neeb
2016-02-28  6:30     ` [PATCH v3 0/7] replacing strbuf_getline_lf() by strbuf_getline() Eric Sunshine
2016-02-28  7:20       ` Moritz Neeb
2016-02-28  8:03     ` Moritz Neeb
2016-02-29  8:30     ` [PATCH v4 " Moritz Neeb
2016-02-29  8:36       ` [PATCH v4 1/7] quote: remove leading space in sq_dequote_step Moritz Neeb
2016-02-29 19:01         ` Junio C Hamano
2016-02-29 21:45           ` Moritz Neeb
2016-02-29 21:48             ` Moritz Neeb
2016-02-29  8:36       ` [PATCH v4 2/7] bisect: read bisect paths with strbuf_getline() Moritz Neeb
2016-02-29  8:36       ` [PATCH v4 3/7] clean: read user input " Moritz Neeb
2016-02-29  8:36       ` [PATCH v4 5/7] notes copy --stdin: split lines with string_list_split() Moritz Neeb
2016-02-29  8:36       ` [PATCH v4 6/7] remote: read $GIT_DIR/branches/* with strbuf_getline() Moritz Neeb
2016-02-29  8:36       ` [PATCH v4 7/7] wt-status: read rebase todolist " Moritz Neeb
2016-02-29  8:36       ` [PATCH v4 4/7] notes copy --stdin: read lines " Moritz Neeb
2016-02-29 18:19         ` Eric Sunshine
2016-02-29 19:26           ` Moritz Neeb
2016-02-29 19:48             ` Eric Sunshine
2016-02-29 18:26       ` [PATCH v4 0/7] replacing strbuf_getline_lf() by strbuf_getline() Eric Sunshine
2016-03-09  0:25       ` Moritz Neeb
2016-03-09  0:39         ` Junio C Hamano
2016-03-09  1:13           ` Moritz Neeb
2016-03-09 20:28             ` Junio C Hamano
2016-03-09  1:17         ` Eric Sunshine

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56CA6264.1040400@moritzneeb.de \
    --to=lists@moritzneeb.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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 NNTP newsgroup(s).