filter: simplify clean up logic

pull/28/head
Leah Neukirchen 7 years ago
parent 9e49cf7561
commit ad9fe95761

@ -15,6 +15,7 @@ filter(char *input, size_t inlen, char *cmd, char **outputo, size_t *outleno)
ssize_t outalloc = 4096; ssize_t outalloc = 4096;
pid_t pid; pid_t pid;
sigset_t mask, orig_mask; sigset_t mask, orig_mask;
int r;
sigemptyset(&mask); sigemptyset(&mask);
sigaddset(&mask, SIGPIPE); sigaddset(&mask, SIGPIPE);
@ -100,23 +101,18 @@ filter(char *input, size_t inlen, char *cmd, char **outputo, size_t *outleno)
int status; int status;
waitpid(pid, &status, 0); waitpid(pid, &status, 0);
r = WEXITSTATUS(status);
*outputo = output; *outputo = output;
*outleno = outlen; *outleno = outlen;
sigpending(&mask); if (0) {
if (sigismember(&mask, SIGPIPE)) {
int sig;
sigwait(&mask, &sig);
}
sigprocmask(SIG_SETMASK, &orig_mask, 0);
return WEXITSTATUS(status);
fail: fail:
*outputo = 0; *outputo = 0;
*outleno = 0; *outleno = 0;
free(output); free(output);
r = -1;
}
sigpending(&mask); sigpending(&mask);
if (sigismember(&mask, SIGPIPE)) { if (sigismember(&mask, SIGPIPE)) {
@ -125,7 +121,7 @@ fail:
} }
sigprocmask(SIG_SETMASK, &orig_mask, 0); sigprocmask(SIG_SETMASK, &orig_mask, 0);
return -1; return r;
} }
#ifdef TEST #ifdef TEST

Loading…
Cancel
Save