You can clone with
Cannot retrieve contributors at this time
argv-array API==============The argv-array API allows one to dynamically build and storeNULL-terminated lists. An argv-array maintains the invariant that the`argv` member always points to a non-NULL array, and that the array isalways NULL-terminated at the element pointed to by `argv[argc]`. Thismakes the result suitable for passing to functions expecting to receiveargv from main(), or the link:api-run-command.html[run-command API].The link:api-string-list.html[string-list API] is similar, but cannot beused for these purposes; instead of storing a straight string pointer,it contains an item structure with a `util` field that is not compatiblewith the traditional argv interface.Each `argv_array` manages its own memory. Any strings pushed into thearray are duplicated, and all memory is freed by argv_array_clear().Data Structures---------------`struct argv_array`:: A single array. This should be initialized by assignment from `ARGV_ARRAY_INIT`, or by calling `argv_array_init`. The `argv` member contains the actual array; the `argc` member contains the number of elements in the array, not including the terminating NULL.Functions---------`argv_array_init`:: Initialize an array. This is no different than assigning from `ARGV_ARRAY_INIT`.`argv_array_push`:: Push a copy of a string onto the end of the array.`argv_array_pushl`:: Push a list of strings onto the end of the array. The arguments should be a list of `const char *` strings, terminated by a NULL argument.`argv_array_pushf`:: Format a string and push it onto the end of the array. This is a convenience wrapper combining `strbuf_addf` and `argv_array_push`.`argv_array_pop`:: Remove the final element from the array. If there are no elements in the array, do nothing.`argv_array_clear`:: Free all memory associated with the array and return it to the initial, empty state.`argv_array_detach`:: Detach the argv array from the `struct argv_array`, transfering ownership of the allocated array and strings.`argv_array_free_detached`:: Free the memory allocated by a `struct argv_array` that was later detached and is now no longer needed.