kconfig: echo stdin to stdout if either is redirected

"Linux Kernel Mailing List" <[email protected]>
Newsgroups gmane.linux.kernel.commits.head
Message-ID <[email protected]>
Web:        https://git.kernel.org/torvalds/c/f3ff6fb5db68bcd460e9880d5fb4902520dd645b
Commit:     f3ff6fb5db68bcd460e9880d5fb4902520dd645b
Parent:     d2a04648a5dbc3d1d043b35257364f0197d4d868
Refname:    refs/heads/master
Author:     Masahiro Yamada <[email protected]>
AuthorDate: Thu Feb 8 14:56:40 2018 +0900
Committer:  Masahiro Yamada <[email protected]>
CommitDate: Fri Feb 9 04:10:10 2018 +0900

    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 <[email protected]>
    Reviewed-by: Ulf Magnusson <[email protected]>
---
 scripts/kconfig/conf.c | 7 ++++---
 1 file 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)
 {
 	if (!fgets(str, size, in))
 		fprintf(stderr, "\nError in reading or end of file.\n");
+
+	if (!tty_stdio)
+		printf("%s", str);
 }
 
 static int conf_askvalue(struct symbol *sym, const char *def)
@@ -106,8 +109,6 @@ static int conf_askvalue(struct symbol *sym, const char *def)
 	case oldaskconfig:
 		fflush(stdout);
 		xfgets(line, sizeof(line), stdin);
-		if (!tty_stdio)
-			printf("\n");
 		return 1;
 	default:
 		break;
@@ -490,7 +491,7 @@ int main(int ac, char **av)
 	bindtextdomain(PACKAGE, LOCALEDIR);
 	textdomain(PACKAGE);
 
-	tty_stdio = isatty(0) && isatty(1) && isatty(2);
+	tty_stdio = isatty(0) && isatty(1);
 
 	while ((opt = getopt_long(ac, av, "s", long_opts, NULL)) != -1) {
 		if (opt == 's') {
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.