зеркало из https://github.com/microsoft/git.git
run-command: introduce child_process_init()
Add a helper function for initializing those struct child_process variables for which the macro CHILD_PROCESS_INIT can't be used. Suggested-by: Jeff King <peff@peff.net> Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
d318027932
Коммит
483bbd4e4c
|
@ -13,6 +13,10 @@ produces in the caller in order to process it.
|
|||
Functions
|
||||
---------
|
||||
|
||||
`child_process_init`
|
||||
|
||||
Initialize a struct child_process variable.
|
||||
|
||||
`start_command`::
|
||||
|
||||
Start a sub-process. Takes a pointer to a `struct child_process`
|
||||
|
@ -96,8 +100,8 @@ command to run in a sub-process.
|
|||
|
||||
The caller:
|
||||
|
||||
1. allocates and clears (memset(&chld, 0, sizeof(chld)); or
|
||||
using CHILD_PROCESS_INIT) a struct child_process variable;
|
||||
1. allocates and clears (using child_process_init() or
|
||||
CHILD_PROCESS_INIT) a struct child_process variable;
|
||||
2. initializes the members;
|
||||
3. calls start_command();
|
||||
4. processes the data;
|
||||
|
|
|
@ -537,7 +537,8 @@ static struct child_process *git_proxy_connect(int fd[2], char *host)
|
|||
|
||||
get_host_and_port(&host, &port);
|
||||
|
||||
proxy = xcalloc(1, sizeof(*proxy));
|
||||
proxy = xmalloc(sizeof(*proxy));
|
||||
child_process_init(proxy);
|
||||
argv_array_push(&proxy->args, git_proxy_command);
|
||||
argv_array_push(&proxy->args, host);
|
||||
argv_array_push(&proxy->args, port);
|
||||
|
@ -694,7 +695,8 @@ struct child_process *git_connect(int fd[2], const char *url,
|
|||
target_host, 0);
|
||||
free(target_host);
|
||||
} else {
|
||||
conn = xcalloc(1, sizeof(*conn));
|
||||
conn = xmalloc(sizeof(*conn));
|
||||
child_process_init(conn);
|
||||
|
||||
strbuf_addstr(&cmd, prog);
|
||||
strbuf_addch(&cmd, ' ');
|
||||
|
|
|
@ -8,6 +8,12 @@
|
|||
# define SHELL_PATH "/bin/sh"
|
||||
#endif
|
||||
|
||||
void child_process_init(struct child_process *child)
|
||||
{
|
||||
memset(child, 0, sizeof(*child));
|
||||
argv_array_init(&child->args);
|
||||
}
|
||||
|
||||
struct child_to_clean {
|
||||
pid_t pid;
|
||||
struct child_to_clean *next;
|
||||
|
|
|
@ -45,6 +45,7 @@ struct child_process {
|
|||
};
|
||||
|
||||
#define CHILD_PROCESS_INIT { NULL, ARGV_ARRAY_INIT }
|
||||
void child_process_init(struct child_process *);
|
||||
|
||||
int start_command(struct child_process *);
|
||||
int finish_command(struct child_process *);
|
||||
|
|
|
@ -118,7 +118,8 @@ static struct child_process *get_helper(struct transport *transport)
|
|||
if (data->helper)
|
||||
return data->helper;
|
||||
|
||||
helper = xcalloc(1, sizeof(*helper));
|
||||
helper = xmalloc(sizeof(*helper));
|
||||
child_process_init(helper);
|
||||
helper->in = -1;
|
||||
helper->out = -1;
|
||||
helper->err = 0;
|
||||
|
@ -395,7 +396,7 @@ static int get_importer(struct transport *transport, struct child_process *fasti
|
|||
struct child_process *helper = get_helper(transport);
|
||||
struct helper_data *data = transport->data;
|
||||
int cat_blob_fd, code;
|
||||
memset(fastimport, 0, sizeof(*fastimport));
|
||||
child_process_init(fastimport);
|
||||
fastimport->in = helper->out;
|
||||
argv_array_push(&fastimport->args, "fast-import");
|
||||
argv_array_push(&fastimport->args, debug ? "--stats" : "--quiet");
|
||||
|
|
Загрузка…
Ссылка в новой задаче