Skip to content

Commit d15bbe1

Browse files
peffgitster
authored andcommitted
argv-array: add a new "pushl" method
It can be convenient to push many strings in a single line (e.g., if you are initializing an array with defaults). This patch provides a convenience wrapper to allow this. Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent fd93d2e commit d15bbe1

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

Documentation/technical/api-argv-array.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ Functions
3737
`argv_array_push`::
3838
Push a copy of a string onto the end of the array.
3939

40+
`argv_array_pushl`::
41+
Push a list of strings onto the end of the array. The arguments
42+
should be a list of `const char *` strings, terminated by a NULL
43+
argument.
44+
4045
`argv_array_pushf`::
4146
Format a string and push it onto the end of the array. This is a
4247
convenience wrapper combining `strbuf_addf` and `argv_array_push`.

argv-array.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,17 @@ void argv_array_pushf(struct argv_array *array, const char *fmt, ...)
3838
argv_array_push_nodup(array, strbuf_detach(&v, NULL));
3939
}
4040

41+
void argv_array_pushl(struct argv_array *array, ...)
42+
{
43+
va_list ap;
44+
const char *arg;
45+
46+
va_start(ap, array);
47+
while((arg = va_arg(ap, const char *)))
48+
argv_array_push(array, arg);
49+
va_end(ap);
50+
}
51+
4152
void argv_array_clear(struct argv_array *array)
4253
{
4354
if (array->argv != empty_argv) {

argv-array.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ void argv_array_init(struct argv_array *);
1515
void argv_array_push(struct argv_array *, const char *);
1616
__attribute__((format (printf,2,3)))
1717
void argv_array_pushf(struct argv_array *, const char *fmt, ...);
18+
void argv_array_pushl(struct argv_array *, ...);
1819
void argv_array_clear(struct argv_array *);
1920

2021
#endif /* ARGV_ARRAY_H */

0 commit comments

Comments
 (0)