A string list can be used as a stack, but should we? A later patch shows how useful this will be. Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- string-list.c | 8 ++++++++ string-list.h | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/string-list.c b/string-list.c index 9f651bb4294..ea80afc8a0c 100644 --- a/string-list.c +++ b/string-list.c @@ -80,6 +80,14 @@ void string_list_remove(struct string_list *list, const char *string, } } +struct string_list_item *string_list_pop(struct string_list *list) +{ + if (list->nr == 0) + return 0; + + return &list->items[--list->nr]; +} + int string_list_has_string(const struct string_list *list, const char *string) { int exact_match; diff --git a/string-list.h b/string-list.h index ff8f6094a33..a1a41bc961a 100644 --- a/string-list.h +++ b/string-list.h @@ -191,6 +191,12 @@ extern void string_list_remove(struct string_list *list, const char *string, */ struct string_list_item *string_list_lookup(struct string_list *list, const char *string); +/** + * Returns the last item inserted and removes it from the list. + * If the list is empty, return NULL. + */ +struct string_list_item *string_list_pop(struct string_list *list); + /* * Remove all but the first of consecutive entries with the same * string value. If free_util is true, call free() on the util -- 2.18.0.597.ga71716f1ad-goog