Counts elements in a list. Signed-off-by: Frediano Ziglio <frediano.zig...@cloud.com> --- grub-core/kern/list.c | 12 ++++++++++++ include/grub/list.h | 2 ++ 2 files changed, 14 insertions(+)
diff --git a/grub-core/kern/list.c b/grub-core/kern/list.c index a256bb3f8..09761b0e5 100644 --- a/grub-core/kern/list.c +++ b/grub-core/kern/list.c @@ -53,3 +53,15 @@ grub_list_remove (grub_list_t item) item->next = 0; item->prev = 0; } + +grub_size_t +grub_list_length (grub_list_t head) +{ + grub_list_t item; + grub_size_t length = 0; + + FOR_LIST_ELEMENTS (item, head) + length++; + + return length; +} diff --git a/include/grub/list.h b/include/grub/list.h index 21f4b4b44..094eaf9cd 100644 --- a/include/grub/list.h +++ b/include/grub/list.h @@ -23,6 +23,7 @@ #include <grub/symbol.h> #include <grub/err.h> #include <grub/compiler.h> +#include <grub/types.h> struct grub_list { @@ -33,6 +34,7 @@ typedef struct grub_list *grub_list_t; void EXPORT_FUNC(grub_list_push) (grub_list_t *head, grub_list_t item); void EXPORT_FUNC(grub_list_remove) (grub_list_t item); +grub_size_t EXPORT_FUNC(grub_list_length) (grub_list_t head); #define FOR_LIST_ELEMENTS(var, list) for ((var) = (list); (var); (var) = (var)->next) #define FOR_LIST_ELEMENTS_NEXT(var, list) for ((var) = (var)->next; (var); (var) = (var)->next) -- 2.43.0 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel