THIS IS A TEST INSTANCE ONLY! REPOSITORIES CAN BE DELETED AT ANY TIME!

Browse Source

daemon: use an argv_array to exec children

Our struct child_process already has its own argv_array.
Let's use that to avoid having to format options into
separate buffers.

Note that we'll need to declare the child process outside of
the run_service_command() helper to do this. But that opens
up a further simplification, which is that the helper can
append to our argument list, saving each caller from
specifying "." manually.

Signed-off-by: Jeff King <peff@peff.net>
tags/v2.13.0-rc0
Jeff King Junio C Hamano 2 years ago
parent
commit
6a97da3964
1 changed files with 17 additions and 21 deletions
  1. +17
    -21
      daemon.c

+ 17
- 21
daemon.c View File

@@ -449,46 +449,42 @@ static void copy_to_log(int fd)
fclose(fp);
}

static int run_service_command(const char **argv)
static int run_service_command(struct child_process *cld)
{
struct child_process cld = CHILD_PROCESS_INIT;

cld.argv = argv;
cld.git_cmd = 1;
cld.err = -1;
if (start_command(&cld))
argv_array_push(&cld->args, ".");
cld->git_cmd = 1;
cld->err = -1;
if (start_command(cld))
return -1;

close(0);
close(1);

copy_to_log(cld.err);
copy_to_log(cld->err);

return finish_command(&cld);
return finish_command(cld);
}

static int upload_pack(void)
{
/* Timeout as string */
char timeout_buf[64];
const char *argv[] = { "upload-pack", "--strict", NULL, ".", NULL };

argv[2] = timeout_buf;

snprintf(timeout_buf, sizeof timeout_buf, "--timeout=%u", timeout);
return run_service_command(argv);
struct child_process cld = CHILD_PROCESS_INIT;
argv_array_pushl(&cld.args, "upload-pack", "--strict", NULL);
argv_array_pushf(&cld.args, "--timeout=%u", timeout);
return run_service_command(&cld);
}

static int upload_archive(void)
{
static const char *argv[] = { "upload-archive", ".", NULL };
return run_service_command(argv);
struct child_process cld = CHILD_PROCESS_INIT;
argv_array_push(&cld.args, "upload-archive");
return run_service_command(&cld);
}

static int receive_pack(void)
{
static const char *argv[] = { "receive-pack", ".", NULL };
return run_service_command(argv);
struct child_process cld = CHILD_PROCESS_INIT;
argv_array_push(&cld.args, "receive-pack");
return run_service_command(&cld);
}

static struct daemon_service daemon_service[] = {


Loading…
Cancel
Save