Commit 96e9dd14 authored by Ben Collins's avatar Ben Collins Committed by Linus Torvalds
Browse files

[PATCH] kconf: Check for eof from input stream.



Signed-off-by: default avatarBen Collins <bcollins@ubuntu.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent f756d5e2
...@@ -63,6 +63,20 @@ static void check_stdin(void) ...@@ -63,6 +63,20 @@ static void check_stdin(void)
} }
} }
static char *fgets_check_stream(char *s, int size, FILE *stream)
{
char *ret = fgets(s, size, stream);
if (ret == NULL && feof(stream)) {
printf(_("aborted!\n\n"));
printf(_("Console input is closed. "));
printf(_("Run 'make oldconfig' to update configuration.\n\n"));
exit(1);
}
return ret;
}
static void conf_askvalue(struct symbol *sym, const char *def) static void conf_askvalue(struct symbol *sym, const char *def)
{ {
enum symbol_type type = sym_get_type(sym); enum symbol_type type = sym_get_type(sym);
...@@ -100,7 +114,7 @@ static void conf_askvalue(struct symbol *sym, const char *def) ...@@ -100,7 +114,7 @@ static void conf_askvalue(struct symbol *sym, const char *def)
check_stdin(); check_stdin();
case ask_all: case ask_all:
fflush(stdout); fflush(stdout);
fgets(line, 128, stdin); fgets_check_stream(line, 128, stdin);
return; return;
case set_default: case set_default:
printf("%s\n", def); printf("%s\n", def);
...@@ -356,7 +370,7 @@ static int conf_choice(struct menu *menu) ...@@ -356,7 +370,7 @@ static int conf_choice(struct menu *menu)
check_stdin(); check_stdin();
case ask_all: case ask_all:
fflush(stdout); fflush(stdout);
fgets(line, 128, stdin); fgets_check_stream(line, 128, stdin);
strip(line); strip(line);
if (line[0] == '?') { if (line[0] == '?') {
printf("\n%s\n", menu->sym->help ? printf("\n%s\n", menu->sym->help ?
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment