History

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.

Masahiro Yamada committed 8 years ago

Commit f3ff6fb1 parent d2a04641 file · +4 −3Browse files

Unified · Split

scripts/kconfig/conf.c+4−3
@@ -76,6 +76,9 @@ static void xfgets(char *str, int size, FILE *in) · 75 unmodified lines
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) · 24 unmodified lines
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) · 376 unmodified lines
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') {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t