From 85f54d8e836ac80264111df7d87db6c15eaca558 Mon Sep 17 00:00:00 2001 From: Rob Landley <rob@landley.net> Date: Mon, 8 Feb 2016 15:24:33 -0600 Subject: Add xpipe() to lib. --- lib/lib.h | 1 + lib/xwrap.c | 6 ++++++ toys/pending/syslogd.c | 2 +- toys/pending/tar.c | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/lib.h b/lib/lib.h index 5733103b..c111aeb0 100644 --- a/lib/lib.h +++ b/lib/lib.h @@ -119,6 +119,7 @@ void xaccess(char *path, int flags); void xunlink(char *path); int xcreate(char *path, int flags, int mode); int xopen(char *path, int flags); +void xpipe(int pp); void xclose(int fd); int xdup(int fd); FILE *xfdopen(int fd, char *mode); diff --git a/lib/xwrap.c b/lib/xwrap.c index 65e3018d..76b0ff37 100644 --- a/lib/xwrap.c +++ b/lib/xwrap.c @@ -33,6 +33,7 @@ void xexit(void) if (toys.rebound) longjmp(*toys.rebound, 1); if (fflush(NULL) || ferror(stdout)) if (!toys.exitval) perror_msg("write"); + exit(toys.exitval); } @@ -309,6 +310,11 @@ int xopen(char *path, int flags) return xcreate(path, flags, 0); } +void xpipe(int pp) +{ + if (pipe(pp)) perror_exit("xpipe"); +} + void xclose(int fd) { if (close(fd)) perror_exit("xclose"); diff --git a/toys/pending/syslogd.c b/toys/pending/syslogd.c index 450bd72f..73542cac 100644 --- a/toys/pending/syslogd.c +++ b/toys/pending/syslogd.c @@ -460,7 +460,7 @@ init_jumpin: } // Setup signals - if (pipe(TT.sigfd) < 0) error_exit("pipe failed\n"); + xpipe(TT.sigfd); fcntl(TT.sigfd[1] , F_SETFD, FD_CLOEXEC); fcntl(TT.sigfd[0] , F_SETFD, FD_CLOEXEC); diff --git a/toys/pending/tar.c b/toys/pending/tar.c index c8b6dff8..6140ea5d 100644 --- a/toys/pending/tar.c +++ b/toys/pending/tar.c @@ -287,7 +287,7 @@ static void compress_stream(struct archive_handler *tar_hdl) int pipefd[2]; pid_t cpid; - if (pipe(pipefd) == -1) error_exit("pipe"); + xpipe(pipefd); signal(SIGPIPE, SIG_IGN); cpid = fork(); -- cgit v1.2.3