mirror of
https://github.com/git/git.git
synced 2024-11-25 10:54:00 +08:00
b992657ed0
The usual pattern for an argv array is to initialize it, push in some strings, and then clear it when done. Very occasionally, though, we must do other exotic things with the memory, like freeing the list but keeping the strings. Let's provide a detach function so that callers can make use of our API to build up the array, and then take ownership of it. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
26 lines
689 B
C
26 lines
689 B
C
#ifndef ARGV_ARRAY_H
|
|
#define ARGV_ARRAY_H
|
|
|
|
extern const char *empty_argv[];
|
|
|
|
struct argv_array {
|
|
const char **argv;
|
|
int argc;
|
|
int alloc;
|
|
};
|
|
|
|
#define ARGV_ARRAY_INIT { empty_argv, 0, 0 }
|
|
|
|
void argv_array_init(struct argv_array *);
|
|
void argv_array_push(struct argv_array *, const char *);
|
|
__attribute__((format (printf,2,3)))
|
|
void argv_array_pushf(struct argv_array *, const char *fmt, ...);
|
|
LAST_ARG_MUST_BE_NULL
|
|
void argv_array_pushl(struct argv_array *, ...);
|
|
void argv_array_pushv(struct argv_array *, const char **);
|
|
void argv_array_pop(struct argv_array *);
|
|
void argv_array_clear(struct argv_array *);
|
|
const char **argv_array_detach(struct argv_array *);
|
|
|
|
#endif /* ARGV_ARRAY_H */
|