string_list: add function string_list_append_nodup()
Add a new function that appends a string to a string_list without copying it. This can be used to pass ownership of an already-copied string to a string_list that has strdup_strings set. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
0ce9864461
commit
e448fed8e6
@ -29,6 +29,7 @@ int for_each_string_list(struct string_list *list,
|
||||
#define for_each_string_list_item(item,list) \
|
||||
for (item = (list)->items; item < (list)->items + (list)->nr; ++item)
|
||||
|
||||
|
||||
/* Use these functions only on sorted lists: */
|
||||
int string_list_has_string(const struct string_list *list, const char *string);
|
||||
int string_list_find_insert_index(const struct string_list *list, const char *string,
|
||||
@ -38,11 +39,28 @@ struct string_list_item *string_list_insert_at_index(struct string_list *list,
|
||||
int insert_at, const char *string);
|
||||
struct string_list_item *string_list_lookup(struct string_list *list, const char *string);
|
||||
|
||||
|
||||
/* Use these functions only on unsorted lists: */
|
||||
|
||||
/*
|
||||
* Add string to the end of list. If list->strdup_string is set, then
|
||||
* string is copied; otherwise the new string_list_entry refers to the
|
||||
* input string.
|
||||
*/
|
||||
struct string_list_item *string_list_append(struct string_list *list, const char *string);
|
||||
|
||||
/*
|
||||
* Like string_list_append(), except string is never copied. When
|
||||
* list->strdup_strings is set, this function can be used to hand
|
||||
* ownership of a malloc()ed string to list without making an extra
|
||||
* copy.
|
||||
*/
|
||||
struct string_list_item *string_list_append_nodup(struct string_list *list, char *string);
|
||||
|
||||
void sort_string_list(struct string_list *list);
|
||||
int unsorted_string_list_has_string(struct string_list *list, const char *string);
|
||||
struct string_list_item *unsorted_string_list_lookup(struct string_list *list,
|
||||
const char *string);
|
||||
|
||||
void unsorted_string_list_delete_item(struct string_list *list, int i, int free_util);
|
||||
#endif /* STRING_LIST_H */
|
||||
|
Reference in New Issue
Block a user