296
return NULL; /* Fallthrough. Deny by default */
297
}
298
299
-typedef int (*daemon_service_fn)(const struct argv_array *env);
299
+typedef int (*daemon_service_fn)(const struct strvec *env);
300
struct daemon_service {
301
const char *name;
302
const char *config_name;
377
}
378
379
static int run_service(const char *dir, struct daemon_service *service,
380
- struct hostinfo *hi, const struct argv_array *env)
380
+ struct hostinfo *hi, const struct strvec *env)
381
{
382
const char *path;
383
int enabled = service->enabled;
462
463
static int run_service_command(struct child_process *cld)
464
{
465
- argv_array_push(&cld->args, ".");
465
+ strvec_push(&cld->args, ".");
466
cld->git_cmd = 1;
467
cld->err = -1;
468
if (start_command(cld))
476
return finish_command(cld);
477
}
478
479
-static int upload_pack(const struct argv_array *env)
479
+static int upload_pack(const struct strvec *env)
480
{
481
struct child_process cld = CHILD_PROCESS_INIT;
482
- argv_array_pushl(&cld.args, "upload-pack", "--strict", NULL);
483
- argv_array_pushf(&cld.args, "--timeout=%u", timeout);
482
+ strvec_pushl(&cld.args, "upload-pack", "--strict", NULL);
483
+ strvec_pushf(&cld.args, "--timeout=%u", timeout);
484
485
- argv_array_pushv(&cld.env_array, env->argv);
485
+ strvec_pushv(&cld.env_array, env->argv);
486
487
return run_service_command(&cld);
488
}
489
490
-static int upload_archive(const struct argv_array *env)
490
+static int upload_archive(const struct strvec *env)
491
{
492
struct child_process cld = CHILD_PROCESS_INIT;
493
- argv_array_push(&cld.args, "upload-archive");
493
+ strvec_push(&cld.args, "upload-archive");
494
495
- argv_array_pushv(&cld.env_array, env->argv);
495
+ strvec_pushv(&cld.env_array, env->argv);
496
497
return run_service_command(&cld);
498
}
499
500
-static int receive_pack(const struct argv_array *env)
500
+static int receive_pack(const struct strvec *env)
501
{
502
struct child_process cld = CHILD_PROCESS_INIT;
503
- argv_array_push(&cld.args, "receive-pack");
503
+ strvec_push(&cld.args, "receive-pack");
504
505
- argv_array_pushv(&cld.env_array, env->argv);
505
+ strvec_pushv(&cld.env_array, env->argv);
506
507
return run_service_command(&cld);
508
}
633
return extra_args;
634
}
635
636
-static void parse_extra_args(struct hostinfo *hi, struct argv_array *env,
636
+static void parse_extra_args(struct hostinfo *hi, struct strvec *env,
637
char *extra_args, int buflen)
638
{
639
const char *end = extra_args + buflen;
664
665
if (git_protocol.len > 0) {
666
loginfo("Extended attribute \"protocol\": %s", git_protocol.buf);
667
- argv_array_pushf(env, GIT_PROTOCOL_ENVIRONMENT "=%s",
667
+ strvec_pushf(env, GIT_PROTOCOL_ENVIRONMENT "=%s",
668
git_protocol.buf);
669
}
670
strbuf_release(&git_protocol);
761
int pktlen, len, i;
762
char *addr = getenv("REMOTE_ADDR"), *port = getenv("REMOTE_PORT");
763
struct hostinfo hi;
764
- struct argv_array env = ARGV_ARRAY_INIT;
764
+ struct strvec env = STRVEC_INIT;
765
766
hostinfo_init(&hi);
767
794
*/
795
int rc = run_service(arg, s, &hi, &env);
796
hostinfo_clear(&hi);
797
- argv_array_clear(&env);
797
+ strvec_clear(&env);
798
return rc;
799
}
800
}
801
802
hostinfo_clear(&hi);
803
- argv_array_clear(&env);
803
+ strvec_clear(&env);
804
logerror("Protocol error: '%s'", line);
805
return -1;
806
}
893
cradle = &blanket->next;
894
}
895
896
-static struct argv_array cld_argv = ARGV_ARRAY_INIT;
896
+static struct strvec cld_argv = STRVEC_INIT;
897
static void handle(int incoming, struct sockaddr *addr, socklen_t addrlen)
898
{
899
struct child_process cld = CHILD_PROCESS_INIT;
913
char buf[128] = "";
914
struct sockaddr_in *sin_addr = (void *) addr;
915
inet_ntop(addr->sa_family, &sin_addr->sin_addr, buf, sizeof(buf));
916
- argv_array_pushf(&cld.env_array, "REMOTE_ADDR=%s", buf);
917
- argv_array_pushf(&cld.env_array, "REMOTE_PORT=%d",
916
+ strvec_pushf(&cld.env_array, "REMOTE_ADDR=%s", buf);
917
+ strvec_pushf(&cld.env_array, "REMOTE_PORT=%d",
918
ntohs(sin_addr->sin_port));
919
#ifndef NO_IPV6
920
} else if (addr->sa_family == AF_INET6) {
921
char buf[128] = "";
922
struct sockaddr_in6 *sin6_addr = (void *) addr;
923
inet_ntop(AF_INET6, &sin6_addr->sin6_addr, buf, sizeof(buf));
924
- argv_array_pushf(&cld.env_array, "REMOTE_ADDR=[%s]", buf);
925
- argv_array_pushf(&cld.env_array, "REMOTE_PORT=%d",
924
+ strvec_pushf(&cld.env_array, "REMOTE_ADDR=[%s]", buf);
925
+ strvec_pushf(&cld.env_array, "REMOTE_PORT=%d",
926
ntohs(sin6_addr->sin6_port));
927
#endif
928
}
1476
write_file(pid_file, "%"PRIuMAX, (uintmax_t) getpid());
1477
1478
/* prepare argv for serving-processes */
1479
- argv_array_push(&cld_argv, argv[0]); /* git-daemon */
1480
- argv_array_push(&cld_argv, "--serve");
1479
+ strvec_push(&cld_argv, argv[0]); /* git-daemon */
1480
+ strvec_push(&cld_argv, "--serve");
1481
for (i = 1; i < argc; ++i)
1482
- argv_array_push(&cld_argv, argv[i]);
1482
+ strvec_push(&cld_argv, argv[i]);
1483
1484
return serve(&listen_addr, listen_port, cred);
1485
}