aboutsummaryrefslogtreecommitdiffstats
path: root/src/util/efunc.h
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2017-04-09 23:46:17 +0200
committerMattias Andrée <maandree@kth.se>2017-04-09 23:46:17 +0200
commitdac6950d9e556d5521ad7913d27a6cf83e2a90a1 (patch)
treebb6a65d973337a0504117888d5534967cc51f479 /src/util/efunc.h
parentClean up (diff)
downloadblind-dac6950d9e556d5521ad7913d27a6cf83e2a90a1.tar.gz
blind-dac6950d9e556d5521ad7913d27a6cf83e2a90a1.tar.bz2
blind-dac6950d9e556d5521ad7913d27a6cf83e2a90a1.tar.xz
Clean up
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src/util/efunc.h')
-rw-r--r--src/util/efunc.h74
1 files changed, 74 insertions, 0 deletions
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 <sys/wait.h>
+#include <unistd.h>
+
+#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;
+}