From dac6950d9e556d5521ad7913d27a6cf83e2a90a1 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sun, 9 Apr 2017 23:46:17 +0200 Subject: Clean up MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/util/efunc.h | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/util/io.h | 13 ++++++++++ src/util/jobs.h | 9 +++++++ 3 files changed, 96 insertions(+) create mode 100644 src/util/efunc.h (limited to 'src/util') diff --git a/src/util/efunc.h b/src/util/efunc.h new file mode 100644 index 0000000..03d1609 --- /dev/null +++ b/src/util/efunc.h @@ -0,0 +1,74 @@ +/* See LICENSE file for copyright and license details. */ +#include +#include + +#define eexecvp(F, ...) (execvp(F, __VA_ARGS__), eprintf("exec %s:", F)) +#define eexeclp(F, ...) (execlp(F, __VA_ARGS__), eprintf("exec %s:", F)) + +static inline void +epipe(int fds[2]) +{ + if (pipe(fds)) + eprintf("pipe:"); +} + +static inline pid_t +efork(void) +{ + pid_t ret = fork(); + if (ret < 0) + eprintf("fork:"); + return ret; +} + +static inline void +edup2(int old, int new) +{ + if (dup2(old, new) < 0) + eprintf("dup2:"); +} + +static inline int +edup(int fd) +{ + int ret = dup(fd); + if (ret < 0) + eprintf("dup:"); + return ret; +} + +static inline pid_t +ewaitpid(pid_t pid, int *status, int flags) +{ + pid_t ret = waitpid(pid, status, flags); + if (ret < 0) + eprintf("waitpid:"); + return ret; +} + +static inline size_t +eread(int fd, void *buf, size_t n, const char *fname) +{ + ssize_t ret = read(fd, buf, n); + if (ret < 0) + eprintf("read %s:", fname); + return (size_t)ret; +} + +static inline size_t +epread(int fd, void *buf, size_t n, off_t off, const char *fname) +{ + ssize_t ret = pread(fd, buf, n, off); + if (ret < 0) + eprintf("pread %s:", fname); + return (size_t)ret; +} + +static inline off_t +elseek(int fd, off_t offset, int whence, const char *fname) +{ + off_t ret = lseek(fd, offset, whence); + if (ret < 0) + eprintf("lseek %s:", fname); + return ret; +} diff --git a/src/util/io.h b/src/util/io.h index 44e222d..8c646cb 100644 --- a/src/util/io.h +++ b/src/util/io.h @@ -1,4 +1,17 @@ /* See LICENSE file for copyright and license details. */ +#include + +#if defined(POSIX_FADV_SEQUENTIAL) +# define fadvise_sequential(...) posix_fadvise(__VA_ARGS__, POSIX_FADV_SEQUENTIAL) +#else +# define fadvise_sequential(...) +#endif + +#if defined(POSIX_FADV_RANDOM) +# define fadvise_random(...) posix_fadvise(__VA_ARGS__, POSIX_FADV_RANDOM) +#else +# define fadvise_random(...) +#endif #define ewriteall(...) enwriteall(1, __VA_ARGS__) #define ereadall(...) enreadall(1, __VA_ARGS__) diff --git a/src/util/jobs.h b/src/util/jobs.h index d45433c..9accf84 100644 --- a/src/util/jobs.h +++ b/src/util/jobs.h @@ -1,4 +1,13 @@ /* See LICENSE file for copyright and license details. */ +#if defined(HAVE_PRCTL) +# include +#endif + +#if defined(HAVE_PRCTL) && defined(PR_SET_PDEATHSIG) +# define pdeath(SIGNAL) prctl(PR_SET_PDEATHSIG, SIGNAL); +#else +# define pdeath(SIGNAL) +#endif #define efork_jobs(...) enfork_jobs(1, __VA_ARGS__) #define ejoin_jobs(...) enjoin_jobs(1, __VA_ARGS__) -- cgit v1.2.3-70-g09d2