diff options
Diffstat (limited to 'shared.c')
-rw-r--r-- | shared.c | 35 |
1 files changed, 0 insertions, 35 deletions
@@ -457,41 +457,6 @@ void cgit_prepare_repo_env(struct cgit_repo * repo) | |||
457 | fprintf(stderr, warn, p->name, p->value); | 457 | fprintf(stderr, warn, p->name, p->value); |
458 | } | 458 | } |
459 | 459 | ||
460 | int cgit_open_filter(struct cgit_filter *filter) | ||
461 | { | ||
462 | filter->old_stdout = chk_positive(dup(STDOUT_FILENO), | ||
463 | "Unable to duplicate STDOUT"); | ||
464 | chk_zero(pipe(filter->pipe_fh), "Unable to create pipe to subprocess"); | ||
465 | filter->pid = chk_non_negative(fork(), "Unable to create subprocess"); | ||
466 | if (filter->pid == 0) { | ||
467 | close(filter->pipe_fh[1]); | ||
468 | chk_non_negative(dup2(filter->pipe_fh[0], STDIN_FILENO), | ||
469 | "Unable to use pipe as STDIN"); | ||
470 | execvp(filter->cmd, filter->argv); | ||
471 | die_errno("Unable to exec subprocess %s", filter->cmd); | ||
472 | } | ||
473 | close(filter->pipe_fh[0]); | ||
474 | chk_non_negative(dup2(filter->pipe_fh[1], STDOUT_FILENO), | ||
475 | "Unable to use pipe as STDOUT"); | ||
476 | close(filter->pipe_fh[1]); | ||
477 | return 0; | ||
478 | } | ||
479 | |||
480 | int cgit_close_filter(struct cgit_filter *filter) | ||
481 | { | ||
482 | int exit_status; | ||
483 | |||
484 | chk_non_negative(dup2(filter->old_stdout, STDOUT_FILENO), | ||
485 | "Unable to restore STDOUT"); | ||
486 | close(filter->old_stdout); | ||
487 | if (filter->pid < 0) | ||
488 | return 0; | ||
489 | waitpid(filter->pid, &exit_status, 0); | ||
490 | if (WIFEXITED(exit_status) && !WEXITSTATUS(exit_status)) | ||
491 | return 0; | ||
492 | die("Subprocess %s exited abnormally", filter->cmd); | ||
493 | } | ||
494 | |||
495 | /* Read the content of the specified file into a newly allocated buffer, | 460 | /* Read the content of the specified file into a newly allocated buffer, |
496 | * zeroterminate the buffer and return 0 on success, errno otherwise. | 461 | * zeroterminate the buffer and return 0 on success, errno otherwise. |
497 | */ | 462 | */ |