mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-04 12:21:03 +02:00
console: add console_flush_stdin()
Add a common helper console_flush_stdin() to drain all pending characters from stdin. This consolidates the open-coded while (tstc()) getchar() pattern that appeared in multiple places across the tree. Signed-off-by: Gregor Herburger <gregor.herburger@linutronix.de> Reviewed-by: Alexander Sverdlin <alexander.sverdlin@siemens.com> Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
3abc7c1d46
commit
2c8fdd7aea
@ -6,6 +6,7 @@
|
||||
* Copyright (c) 2018, Heinrich Schuchardt <xypron.glpk@gmx.de>
|
||||
*/
|
||||
#include <command.h>
|
||||
#include <console.h>
|
||||
#include <linux/delay.h>
|
||||
|
||||
static int do_conitrace(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
@ -17,8 +18,7 @@ static int do_conitrace(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
printf("To terminate type 'x'\n");
|
||||
|
||||
/* Empty input buffer */
|
||||
while (tstc())
|
||||
getchar();
|
||||
console_flush_stdin();
|
||||
|
||||
for (;;) {
|
||||
int c = getchar();
|
||||
|
||||
@ -6,8 +6,9 @@
|
||||
*/
|
||||
|
||||
#include <ansi.h>
|
||||
#include <cli.h>
|
||||
#include <charset.h>
|
||||
#include <cli.h>
|
||||
#include <console.h>
|
||||
#include <efi_device_path.h>
|
||||
#include <efi_loader.h>
|
||||
#include <efi_load_initrd.h>
|
||||
@ -167,8 +168,7 @@ static void eficonfig_menu_adjust(struct efimenu *efi_menu, bool add)
|
||||
void eficonfig_print_msg(char *msg)
|
||||
{
|
||||
/* Flush input */
|
||||
while (tstc())
|
||||
getchar();
|
||||
console_flush_stdin();
|
||||
|
||||
printf(ANSI_CURSOR_HIDE
|
||||
ANSI_CLEAR_CONSOLE
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
|
||||
#include <ansi.h>
|
||||
#include <charset.h>
|
||||
#include <console.h>
|
||||
#include <hexdump.h>
|
||||
#include <log.h>
|
||||
#include <malloc.h>
|
||||
@ -288,8 +289,7 @@ static efi_status_t eficonfig_process_show_siglist(void *data)
|
||||
}
|
||||
}
|
||||
|
||||
while (tstc())
|
||||
getchar();
|
||||
console_flush_stdin();
|
||||
|
||||
printf("\n\n Press any key to continue");
|
||||
getchar();
|
||||
|
||||
@ -315,15 +315,6 @@ static int passwd_abort_key(uint64_t etime)
|
||||
return abort;
|
||||
}
|
||||
|
||||
/**
|
||||
* flush_stdin() - drops all pending characters from stdin
|
||||
*/
|
||||
static void flush_stdin(void)
|
||||
{
|
||||
while (tstc())
|
||||
(void)getchar();
|
||||
}
|
||||
|
||||
/**
|
||||
* fallback_to_sha256() - check whether we should fall back to sha256
|
||||
* password checking
|
||||
@ -354,7 +345,7 @@ static int abortboot_key_sequence(int bootdelay)
|
||||
uint64_t etime = endtick(bootdelay);
|
||||
|
||||
if (IS_ENABLED(CONFIG_AUTOBOOT_FLUSH_STDIN))
|
||||
flush_stdin();
|
||||
console_flush_stdin();
|
||||
# ifdef CONFIG_AUTOBOOT_PROMPT
|
||||
/*
|
||||
* CONFIG_AUTOBOOT_PROMPT includes the %d for all boards.
|
||||
|
||||
@ -643,6 +643,15 @@ int tstc(void)
|
||||
return serial_tstc();
|
||||
}
|
||||
|
||||
/**
|
||||
* console_flush_stdin() - drops all pending characters from stdin
|
||||
*/
|
||||
void console_flush_stdin(void)
|
||||
{
|
||||
while (tstc())
|
||||
(void)getchar();
|
||||
}
|
||||
|
||||
#define PRE_CONSOLE_FLUSHPOINT1_SERIAL 0
|
||||
#define PRE_CONSOLE_FLUSHPOINT2_EVERYTHING_BUT_SERIAL 1
|
||||
|
||||
@ -914,8 +923,7 @@ int confirm_yesno(void)
|
||||
char str_input[5];
|
||||
|
||||
/* Flush input */
|
||||
while (tstc())
|
||||
getchar();
|
||||
console_flush_stdin();
|
||||
i = 0;
|
||||
while (i < sizeof(str_input)) {
|
||||
str_input[i] = getchar();
|
||||
|
||||
@ -202,6 +202,11 @@ int console_clear(void);
|
||||
*/
|
||||
int console_remove_by_name(const char *name);
|
||||
|
||||
/**
|
||||
* console_flush_stdin() - drops all pending characters from stdin
|
||||
*/
|
||||
void console_flush_stdin(void);
|
||||
|
||||
/*
|
||||
* CONSOLE multiplexing.
|
||||
*/
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
|
||||
#include <ansi.h>
|
||||
#include <charset.h>
|
||||
#include <console.h>
|
||||
#include <efi_device_path.h>
|
||||
#include <malloc.h>
|
||||
#include <time.h>
|
||||
@ -299,8 +300,7 @@ static int query_console_serial(int *rows, int *cols)
|
||||
int n[2];
|
||||
|
||||
/* Empty input buffer */
|
||||
while (tstc())
|
||||
getchar();
|
||||
console_flush_stdin();
|
||||
|
||||
/*
|
||||
* Not all terminals understand CSI [18t for querying the console size.
|
||||
@ -960,8 +960,7 @@ static void efi_cin_check(void)
|
||||
*/
|
||||
static void efi_cin_empty_buffer(void)
|
||||
{
|
||||
while (tstc())
|
||||
getchar();
|
||||
console_flush_stdin();
|
||||
key_available = false;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user