Skip to content

Commit

Permalink
efi_loader: initrddump: drain input before prompt
Browse files Browse the repository at this point in the history
Up to now the initrddump.efi application has drained the input after
showing the prompt. This works for humans but leads to problems when
automating testing. If the input is drained, this should be done before
showing the prompt.

Signed-off-by: Heinrich Schuchardt <[email protected]>
Acked-by: Ilias Apalodimas <[email protected]>
  • Loading branch information
xypron committed Mar 26, 2022
1 parent ae794fa commit 24cf707
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions lib/efi_loader/initrddump.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,14 @@ static void printx(u64 val, u32 prec)
print(buf);
}

/**
* efi_drain_input() - drain console input
*/
static void efi_drain_input(void)
{
cin->reset(cin, true);
}

/**
* efi_input_yn() - get answer to yes/no question
*
Expand All @@ -137,8 +145,6 @@ static efi_status_t efi_input_yn(void)
efi_uintn_t index;
efi_status_t ret;

/* Drain the console input */
ret = cin->reset(cin, true);
for (;;) {
ret = bs->wait_for_event(1, &cin->wait_for_key, &index);
if (ret != EFI_SUCCESS)
Expand Down Expand Up @@ -179,8 +185,6 @@ static efi_status_t efi_input(u16 *buffer, efi_uintn_t buffer_size)
u16 outbuf[2] = u" ";
efi_status_t ret;

/* Drain the console input */
ret = cin->reset(cin, true);
*buffer = 0;
for (;;) {
ret = bs->wait_for_event(1, &cin->wait_for_key, &index);
Expand Down Expand Up @@ -393,6 +397,7 @@ static efi_status_t do_save(u16 *filename)
ret = root->open(root, &file, filename, EFI_FILE_MODE_READ, 0);
if (ret == EFI_SUCCESS) {
file->close(file);
efi_drain_input();
print(u"Overwrite existing file (y/n)? ");
ret = efi_input_yn();
print(u"\r\n");
Expand Down Expand Up @@ -486,6 +491,7 @@ efi_status_t EFIAPI efi_main(efi_handle_t image_handle,
u16 *pos;
efi_uintn_t ret;

efi_drain_input();
print(u"=> ");
ret = efi_input(command, sizeof(command));
if (ret == EFI_ABORTED)
Expand Down

0 comments on commit 24cf707

Please sign in to comment.