list-objects-filter-options: create copy helper
As we add more embedded members with type 'struct list_objects_filter_options', it will be important to easily perform a deep copy across multiple such structs. Create list_objects_filter_copy() to satisfy this need. This method is recursive to match the recursive nature of the struct. Signed-off-by: Derrick Stolee <derrickstolee@github.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
1f52cdfacb
commit
4a4c3f9b63
@ -415,3 +415,22 @@ void partial_clone_get_default_filter_spec(
|
|||||||
&errbuf);
|
&errbuf);
|
||||||
strbuf_release(&errbuf);
|
strbuf_release(&errbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void list_objects_filter_copy(
|
||||||
|
struct list_objects_filter_options *dest,
|
||||||
|
const struct list_objects_filter_options *src)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
struct string_list_item *item;
|
||||||
|
|
||||||
|
/* Copy everything. We will overwrite the pointers shortly. */
|
||||||
|
memcpy(dest, src, sizeof(struct list_objects_filter_options));
|
||||||
|
|
||||||
|
string_list_init_dup(&dest->filter_spec);
|
||||||
|
for_each_string_list_item(item, &src->filter_spec)
|
||||||
|
string_list_append(&dest->filter_spec, item->string);
|
||||||
|
|
||||||
|
ALLOC_ARRAY(dest->sub, dest->sub_alloc);
|
||||||
|
for (i = 0; i < src->sub_nr; i++)
|
||||||
|
list_objects_filter_copy(&dest->sub[i], &src->sub[i]);
|
||||||
|
}
|
||||||
|
@ -132,4 +132,8 @@ void partial_clone_get_default_filter_spec(
|
|||||||
struct list_objects_filter_options *filter_options,
|
struct list_objects_filter_options *filter_options,
|
||||||
const char *remote);
|
const char *remote);
|
||||||
|
|
||||||
|
void list_objects_filter_copy(
|
||||||
|
struct list_objects_filter_options *dest,
|
||||||
|
const struct list_objects_filter_options *src);
|
||||||
|
|
||||||
#endif /* LIST_OBJECTS_FILTER_OPTIONS_H */
|
#endif /* LIST_OBJECTS_FILTER_OPTIONS_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user