Re: [PATCH v6 1/5] eficonfig: refactor eficonfig_select_file_handler()

Ilias Apalodimas
2022-11-04T15:12:38Z

Hi Kojima-san

I think there's some information missing from the commit message.

On Wed, Oct 26, 2022 at 07:43:41PM +0900, Masahisa Kojima wrote:
> eficonfig_select_file_handler() is commonly used to select the
> file.
> eficonfig_display_select_file_option() intends to add the
> additional menu mainly to clear the selected file information.
'eficonfig_display_select_file_option() adds an additional menu to clear
the selected file' sounds better?

> eficonfig_display_select_file_option() is not necessary for the
> file selection process, so it should be outside of
> eficonfig_select_file_handler().

In a followup patch I think we should rename eficonfig_select_file(). It's
a bit confusing to have both eficonfig_select_file_handler() and
eficonfig_select_file() and iirc the latter creates the menu for the file
selection.

>
> Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
> ---
> No change since v2
>
> newly created in v2
>
> cmd/eficonfig.c | 13 +++++--------
> test/py/tests/test_eficonfig/test_eficonfig.py | 1 +
> 2 files changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/cmd/eficonfig.c b/cmd/eficonfig.c
> index 2595dd9563..f6a99bd01a 100644
> --- a/cmd/eficonfig.c
> +++ b/cmd/eficonfig.c
> @@ -968,7 +968,7 @@ efi_status_t eficonfig_process_clear_file_selection(void *data)
> }
>
> static struct eficonfig_item select_file_menu_items[] = {
> - {"Select File", eficonfig_process_select_file},

eficonfig_process_select_file() is not used anywhere anymore now. We need
to get rid of the function declaration

> + {"Select File", eficonfig_select_file_handler},

This is a different change right? It effectively allows you to choose
between files.
Can we explain this change as well on the commit message?

> {"Clear", eficonfig_process_clear_file_selection},
> {"Quit", eficonfig_process_quit},
> };
> @@ -980,12 +980,13 @@ static struct eficonfig_item select_file_menu_items[] = {
> * @file_info: pointer to the file information structure
> * Return: status code
> */
> -efi_status_t eficonfig_display_select_file_option(struct eficonfig_select_file_info *file_info)
> +efi_status_t eficonfig_display_select_file_option(void *data)
> {
> efi_status_t ret;
> struct efimenu *efi_menu;
>
> - select_file_menu_items[1].data = file_info;
> + select_file_menu_items[0].data = data;
> + select_file_menu_items[1].data = data;
> efi_menu = eficonfig_create_fixed_menu(select_file_menu_items,
> ARRAY_SIZE(select_file_menu_items));
> if (!efi_menu)
> @@ -1016,10 +1017,6 @@ efi_status_t eficonfig_select_file_handler(void *data)
> struct eficonfig_select_file_info *tmp = NULL;
> struct eficonfig_select_file_info *file_info = data;
>
> - ret = eficonfig_display_select_file_option(file_info);
> - if (ret != EFI_SUCCESS)
> - return ret;
> -
> tmp = calloc(1, sizeof(struct eficonfig_select_file_info));
> if (!tmp)
> return EFI_OUT_OF_RESOURCES;
> @@ -1284,7 +1281,7 @@ static efi_status_t prepare_file_selection_entry(struct efimenu *efi_menu, char
> utf8_utf16_strcpy(&p, devname);
> u16_strlcat(file_name, file_info->current_path, len);
> ret = create_boot_option_entry(efi_menu, title, file_name,
> - eficonfig_select_file_handler, file_info);
> + eficonfig_display_select_file_option, file_info);
> out:
> free(devname);
> free(file_name);
> diff --git a/test/py/tests/test_eficonfig/test_eficonfig.py b/test/py/tests/test_eficonfig/test_eficonfig.py
> index 99606d9c4b..102bfd7541 100644
> --- a/test/py/tests/test_eficonfig/test_eficonfig.py
> +++ b/test/py/tests/test_eficonfig/test_eficonfig.py
> @@ -349,6 +349,7 @@ def test_efi_eficonfig(u_boot_console, efi_eficonfig_data):
> press_up_down_enter_and_wait(0, 1, True, 'Quit')
> press_up_down_enter_and_wait(0, 0, True, 'No block device found!')
> press_escape_key(False)
> + press_escape_key(False)
> check_current_is_maintenance_menu()
> # Return to U-Boot console
> press_escape_key(True)
> --
> 2.17.1
>

Thanks
/Ilias