10 void respond(void *object
, const Request_Info
*request_info
, int socket
)
15 char queryenv
[1024+13+1];
16 char pathenv
[1024+10+1];
17 if (request_info
->tls_client_hash
!= NULL
) {
18 snprintf(tlsenv
, sizeof(tlsenv
), "TLS_CLIENT_HASH=%s", request_info
->tls_client_hash
);
20 if (request_info
->query_string_decoded
!= NULL
) {
21 snprintf(queryenv
, sizeof(queryenv
), "QUERY_STRING=%s", request_info
->query_string_decoded
);
23 if (request_info
->path_info
!= NULL
) {
24 snprintf(pathenv
, sizeof(pathenv
), "PATH_INFO=%s", request_info
->path_info
);
27 const pid_t pid
= fork();
41 setbuffer(stdout
, NULL
, 0);
43 execvp(args
[0], args
);
49 printf("Usage: gemscgi_wrap PATH COMMAND [ARG]...\n");
52 int main(int argc
, char **argv
)
59 /* Prevent zombies (on modern posix) */
60 signal(SIGCHLD
, SIG_IGN
);
62 runSCGI(argv
[1], respond
, &argv
[2]);