[U-Boot] [PATCH] common, menu: do not trigger timeout again, if a line is read

Signed-off-by: Heiko Schocher hs@denx.de Cc: Jason Hobbs jason.hobbs@calxeda.com --- common/menu.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/common/menu.c b/common/menu.c index 754a9f9..aa16c9a 100644 --- a/common/menu.c +++ b/common/menu.c @@ -236,8 +236,10 @@ static inline int menu_interactive_choice(struct menu *m, void **choice) if (readret >= 0) { choice_item = menu_item_by_key(m, cbuf);
- if (!choice_item) + if (!choice_item) { printf("%s not found\n", cbuf); + m->timeout = 0; + } } else { puts("^C\n"); return -EINTR;

Dear Heiko,
On Tue, Jan 17, 2012 at 03:24:29AM -0500, Heiko Schocher wrote:
Signed-off-by: Heiko Schocher hs@denx.de Cc: Jason Hobbs jason.hobbs@calxeda.com
Acked-by: Jason Hobbs jason.hobbs@calxeda.com
common/menu.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/common/menu.c b/common/menu.c index 754a9f9..aa16c9a 100644 --- a/common/menu.c +++ b/common/menu.c @@ -236,8 +236,10 @@ static inline int menu_interactive_choice(struct menu *m, void **choice) if (readret >= 0) { choice_item = menu_item_by_key(m, cbuf);
if (!choice_item)
if (!choice_item) { printf("%s not found\n", cbuf);
m->timeout = 0;
} else { puts("^C\n"); return -EINTR;}
-- 1.7.7.4

On Tuesday 17 January 2012 03:24:29 Heiko Schocher wrote:
--- a/common/menu.c +++ b/common/menu.c choice_item = menu_item_by_key(m, cbuf);
if (!choice_item)
if (!choice_item) { printf("%s not found\n", cbuf);
m->timeout = 0;
} else { puts("^C\n"); return -EINTR;}
the summary says "do not timeout again if a line is read", but this C code seems like "do not timeout again if an item was selected but not found". but maybe i'm reading the menu code incorrectly ? -mike

Hello Mike,
Mike Frysinger wrote:
On Tuesday 17 January 2012 03:24:29 Heiko Schocher wrote:
--- a/common/menu.c +++ b/common/menu.c choice_item = menu_item_by_key(m, cbuf);
if (!choice_item)
if (!choice_item) { printf("%s not found\n", cbuf);
m->timeout = 0;
} else { puts("^C\n"); return -EINTR;}
the summary says "do not timeout again if a line is read", but this C code seems like "do not timeout again if an item was selected but not found". but maybe i'm reading the menu code incorrectly ?
No, you are reading C code right, fix this, thanks!
bye, Heiko

Signed-off-by: Heiko Schocher hs@denx.de Acked-by: Jason Hobbs jason.hobbs@calxeda.com Cc: Mike Frysinger vapier@gentoo.org
--- - changes for v2: - add Acked-by from Jason Hobbs jason.hobbs@calxeda.com - add comment from Mike Frysinger: - respell summary text --- common/menu.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/common/menu.c b/common/menu.c index 754a9f9..aa16c9a 100644 --- a/common/menu.c +++ b/common/menu.c @@ -236,8 +236,10 @@ static inline int menu_interactive_choice(struct menu *m, void **choice) if (readret >= 0) { choice_item = menu_item_by_key(m, cbuf);
- if (!choice_item) + if (!choice_item) { printf("%s not found\n", cbuf); + m->timeout = 0; + } } else { puts("^C\n"); return -EINTR;
participants (3)
-
Heiko Schocher
-
Jason Hobbs
-
Mike Frysinger