You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.1 KiB
63 lines
2.1 KiB
argv-array API |
|
============== |
|
|
|
The argv-array API allows one to dynamically build and store |
|
NULL-terminated lists. An argv-array maintains the invariant that the |
|
`argv` member always points to a non-NULL array, and that the array is |
|
always NULL-terminated at the element pointed to by `argv[argc]`. This |
|
makes the result suitable for passing to functions expecting to receive |
|
argv 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 be |
|
used for these purposes; instead of storing a straight string pointer, |
|
it contains an item structure with a `util` field that is not compatible |
|
with the traditional argv interface. |
|
|
|
Each `argv_array` manages its own memory. Any strings pushed into the |
|
array 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.
|
|
|