X-Git-Url: https://git.cworth.org/git?p=ttt;a=blobdiff_plain;f=src%2Fx.c;h=dc5c1dd38e807ee300f9a1d77cc1ef187ef79f7d;hp=1695374c8c72a3c6423a69b69d15728c575055ee;hb=84db9bf52aa25c19f7d547ea2dbec69ca4452300;hpb=2cd70db8433cc9d02a4ca784190260889c835198 diff --git a/src/x.c b/src/x.c index 1695374..dc5c1dd 100644 --- a/src/x.c +++ b/src/x.c @@ -19,9 +19,7 @@ * Author: Carl Worth */ -#include "ttt.h" - -#include +#include "x.h" void xasprintf (char **strp, const char *fmt, ...) @@ -127,18 +125,35 @@ xfdopen (int filedes, const char *mode) ret = fdopen (filedes, mode); if (ret == NULL) { - fprintf (stderr, "Error: fdopen failed: %s. Aborting.\n", strerror (errno)); + fprintf (stderr, "Error: fdopen failed: %s. Aborting.\n", + strerror (errno)); exit (1); } return ret; } +void +xfreopen (const char *path, const char *mode, FILE *stream) +{ + FILE *ret; + + ret = freopen (path, mode, stream); + if (ret == NULL) { + fprintf (stderr, "Error: freopen of %s failed: %s. Aborting.\n", + path, strerror (errno)); + exit (1); + } +} + char * xstrdup (const char *s) { char *ret; + if (s == NULL) + return NULL; + ret = strdup (s); if (ret == NULL) { @@ -236,3 +251,33 @@ xselect (int n, return ret; } + +ssize_t +xread (int fd, void *buf, size_t count) +{ + int ret; + + ret = read (fd, buf, count); + if (ret == -1) { + fprintf (stderr, "Error: read failed: %s. Aborting.\n", + strerror (errno)); + exit (1); + } + + return ret; +} + +ssize_t +xwrite (int fd, const void *buf, size_t count) +{ + int ret; + + ret = write (fd, buf, count); + if (ret == -1) { + fprintf (stderr, "Error: write failed: %s. Aborting.\n", + strerror (errno)); + exit (1); + } + + return ret; +}