Skip to content

Commit

Permalink
[PATCH] kconf: Check for eof from input stream.
Browse files Browse the repository at this point in the history
Signed-off-by: Ben Collins <bcollins@ubuntu.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Ben Collins authored and Linus Torvalds committed Jan 9, 2006
1 parent f756d5e commit 96e9dd1
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions scripts/kconfig/conf.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
enum symbol_type type = sym_get_type(sym);
Expand Down Expand Up @@ -100,7 +114,7 @@ static void conf_askvalue(struct symbol *sym, const char *def)
check_stdin();
case ask_all:
fflush(stdout);
fgets(line, 128, stdin);
fgets_check_stream(line, 128, stdin);
return;
case set_default:
printf("%s\n", def);
Expand Down Expand Up @@ -356,7 +370,7 @@ static int conf_choice(struct menu *menu)
check_stdin();
case ask_all:
fflush(stdout);
fgets(line, 128, stdin);
fgets_check_stream(line, 128, stdin);
strip(line);
if (line[0] == '?') {
printf("\n%s\n", menu->sym->help ?
Expand Down

0 comments on commit 96e9dd1

Please sign in to comment.