aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2018-02-08 00:56:40 -0500
committerMasahiro Yamada <yamada.masahiro@socionext.com>2018-02-08 14:10:10 -0500
commitf3ff6fb5db68bcd460e9880d5fb4902520dd645b (patch)
tree40c06df6cc38a07f8e4daebeebf0d35bd8d32e27
parentd2a04648a5dbc3d1d043b35257364f0197d4d868 (diff)
kconfig: echo stdin to stdout if either is redirected
If stdio is not tty, conf_askvalue() puts additional new line to prevent prompts from being concatenated into a single line. This care is missing in conf_choice(), so a 'choice' prompt and the next prompt are shown in the same line. Move the code into xfgets() to cater to all cases. To improve this more, let's echo stdin to stdout. This clarifies what keys were input from stdio and the stdout looks like as if it were from tty. I removed the isatty(2) check since stderr is unrelated here. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Ulf Magnusson <ulfalizer@gmail.com>
-rw-r--r--scripts/kconfig/conf.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index 92111a077680..fe59f6df4b45 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -76,6 +76,9 @@ static void xfgets(char *str, int size, FILE *in)
76{ 76{
77 if (!fgets(str, size, in)) 77 if (!fgets(str, size, in))
78 fprintf(stderr, "\nError in reading or end of file.\n"); 78 fprintf(stderr, "\nError in reading or end of file.\n");
79
80 if (!tty_stdio)
81 printf("%s", str);
79} 82}
80 83
81static int conf_askvalue(struct symbol *sym, const char *def) 84static int conf_askvalue(struct symbol *sym, const char *def)
@@ -106,8 +109,6 @@ static int conf_askvalue(struct symbol *sym, const char *def)
106 case oldaskconfig: 109 case oldaskconfig:
107 fflush(stdout); 110 fflush(stdout);
108 xfgets(line, sizeof(line), stdin); 111 xfgets(line, sizeof(line), stdin);
109 if (!tty_stdio)
110 printf("\n");
111 return 1; 112 return 1;
112 default: 113 default:
113 break; 114 break;
@@ -490,7 +491,7 @@ int main(int ac, char **av)
490 bindtextdomain(PACKAGE, LOCALEDIR); 491 bindtextdomain(PACKAGE, LOCALEDIR);
491 textdomain(PACKAGE); 492 textdomain(PACKAGE);
492 493
493 tty_stdio = isatty(0) && isatty(1) && isatty(2); 494 tty_stdio = isatty(0) && isatty(1);
494 495
495 while ((opt = getopt_long(ac, av, "s", long_opts, NULL)) != -1) { 496 while ((opt = getopt_long(ac, av, "s", long_opts, NULL)) != -1) {
496 if (opt == 's') { 497 if (opt == 's') {