On 06.02.20 18:46, Simon Glass wrote: > Hi Schrempf, > > On Thu, 6 Feb 2020 at 02:09, Schrempf Frieder > <[email protected]> wrote: >> >> From: Frieder Schrempf <[email protected]> >> >> In order to make it possible to auto select a default entry by >> matching the data of the menu entries by an external matching >> function, we add some helpers and expose the >> menu_set_default_by_item_data_match() function. >> >> Signed-off-by: Frieder Schrempf <[email protected]> >> --- >> Changes in v3: >> * Add a full function comment to describe >> menu_set_default_by_item_data_match(). >> >> Changes in v2: >> * Keep the menu structs private and instead only expose one additional >> function, that sets the default by calling an external matching >> function on each entry. >> * Change the title and commit message to reflect the changes. >> --- >> common/menu.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ >> include/menu.h | 3 +++ >> 2 files changed, 57 insertions(+) >> >> diff --git a/common/menu.c b/common/menu.c >> index 7b66d199a9..6110b2396c 100644 >> --- a/common/menu.c >> +++ b/common/menu.c >> @@ -160,6 +160,60 @@ static inline struct menu_item *menu_item_by_key(struct >> menu *m, >> return menu_items_iter(m, menu_item_key_match, item_key); >> } >> >> +/* >> + * Find the first matching item, if any exists by calling a matching >> function >> + * on the items data field. >> + */ >> +static inline struct menu_item *menu_item_by_matching_fn(struct menu *m, >> + int match(void *, void *), void * extra) >> +{ >> + struct list_head *pos, *n; >> + struct menu_item *item; >> + int ret; >> + >> + list_for_each_safe(pos, n, &m->items) { >> + item = list_entry(pos, struct menu_item, list); >> + if (item->key) { >> + ret = match(item->data, extra); >> + if (ret == 1) >> + return item; >> + } >> + } >> + >> + return NULL; >> +} >> + >> +/* >> + * menu_set_default_by_item_data_match() - sets a menu default option by >> calling >> + * a matching function on each of the menu items data field. >> + * >> + * m - Points to a menu created by menu_create(). >> + * >> + * match - Points to a function that is passed a pointer to the items data >> field >> + * and a pointer to extra data to compare with. It should return 1 >> on a >> + * match. >> + * >> + * extra - Points to some data that is passed as a second parameter to the >> + * matching function. >> + * >> + * key - Points to a char array that will be set to hold the key of the >> matched >> + * menu item. >> + * >> + * Returns 0 if successful, or -ENOENT if no matching item was found. > > Can you please update this to the correct comment style - e.g. see > cmd_process_error() in command.h for example. Also since this is an > exported function the comment should go in the header file.
Sure. Thanks for pointing me to the correct style and for reviewing in general! > > Regards, > SImon >

