interactive: refactor code asking the user for interactive input
There are quite a few code locations (e.g. `git clean --interactive`) where Git asks the user for an answer. In preparation for fixing a bug shared by all of them, and also to DRY up the code, let's refactor it. Please note that most of these callers trimmed white-space both at the beginning and at the end of the answer, instead of trimming only the end (as the caller in `add-patch.c` does). Therefore, technically speaking, we change behavior in this patch. At the same time, it can be argued that this is actually a bug fix. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
9fadedd637
commit
08d383f23e
@ -18,6 +18,7 @@
|
||||
#include "color.h"
|
||||
#include "pathspec.h"
|
||||
#include "help.h"
|
||||
#include "prompt.h"
|
||||
|
||||
static int force = -1; /* unset */
|
||||
static int interactive;
|
||||
@ -420,7 +421,6 @@ static int find_unique(const char *choice, struct menu_stuff *menu_stuff)
|
||||
return found;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Parse user input, and return choice(s) for menu (menu_stuff).
|
||||
*
|
||||
@ -580,9 +580,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 (git_read_line_interactively(&choice) == EOF) {
|
||||
eof = 1;
|
||||
break;
|
||||
}
|
||||
@ -662,9 +660,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 (git_read_line_interactively(&confirm) == EOF)
|
||||
putchar('\n');
|
||||
|
||||
/* quit filter_by_pattern mode if press ENTER or Ctrl-D */
|
||||
@ -760,9 +756,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 (git_read_line_interactively(&confirm) == EOF) {
|
||||
putchar('\n');
|
||||
eof = 1;
|
||||
}
|
||||
|
Reference in New Issue
Block a user