argv-array: add pop function
Sometimes we build a set of similar command lines, differing only in the final arguments (e.g., "fetch --multiple"). To use argv_array for this, you have to either push the same set of elements repeatedly, or break the abstraction by manually manipulating the array's internal members. Instead, let's provide a sanctioned "pop" function to remove elements from the end. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
9e234af281
commit
fe4a0a2888
@ -49,6 +49,15 @@ void argv_array_pushl(struct argv_array *array, ...)
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void argv_array_pop(struct argv_array *array)
|
||||
{
|
||||
if (!array->argc)
|
||||
return;
|
||||
free((char *)array->argv[array->argc - 1]);
|
||||
array->argv[array->argc - 1] = NULL;
|
||||
array->argc--;
|
||||
}
|
||||
|
||||
void argv_array_clear(struct argv_array *array)
|
||||
{
|
||||
if (array->argv != empty_argv) {
|
||||
|
Reference in New Issue
Block a user