> > A later patch shows > > how useful this will be. > > Instead of all of the above, how about being more direct, i.e. e.g. ok. > Conceptually, this allows string_list_clear() to be implemented in > terms of this function, i.e. > > string_list_clear(struct string_list *list, int free_util) > { > while (list->nr) > string_list_pop(list, free_util); > free(list->items); > list->items = NULL; > list->nr = list->alloc = 0; > } > > It is unfortunate that string_list has become such a kitchen-sink in > that a string list whose util field is used in such a way that > string_list_clear_func() needs to be used to clear the list cannot > be used as a stack. Ideally each of these "features" (like > "sorted/unsorted", "owning/borrowing util", "owning/borrowing > string", etc.) ought to be orthogonal, but they are not. Oh, another neat string list feature I overlooked. :/