summaryrefslogtreecommitdiff
path: root/src/libstddjb/iobufferk_fill.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstddjb/iobufferk_fill.c')
-rw-r--r--src/libstddjb/iobufferk_fill.c56
1 files changed, 0 insertions, 56 deletions
diff --git a/src/libstddjb/iobufferk_fill.c b/src/libstddjb/iobufferk_fill.c
deleted file mode 100644
index c24ceba..0000000
--- a/src/libstddjb/iobufferk_fill.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* ISC license. */
-
-#include <skalibs/sysdeps.h>
-
-#ifdef SKALIBS_HASSPLICE
-
-#include <skalibs/nonposix.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <skalibs/iobuffer.h>
-
-static ssize_t iobufferk_tee (iobufferk *k)
-{
- ssize_t r = tee(k->fd[0], k->fd[1], IOBUFFERK_SIZE - k->n, k->nb & 1 ? SPLICE_F_NONBLOCK : 0) ;
- if (r > 0) k->n += r ;
- return r ;
-}
-
-static ssize_t iobufferk_splice (iobufferk *k)
-{
- ssize_t r = splice(k->fd[0], 0, k->fd[1], 0, IOBUFFERK_SIZE, k->nb ? SPLICE_F_NONBLOCK : 0) ;
- if (r > 0) k->n += r ;
- if ((r < 0) && (errno == EINVAL)) errno = ENOSYS ;
- return r ;
-}
-
-static ssize_t iobufferk_fill_3 (iobufferk *k)
-{
- ssize_t r = splice(k->fd[0], 0, k->p[1], 0, IOBUFFERK_SIZE - k->n, k->nb & 1 ? SPLICE_F_NONBLOCK : 0) ;
- if (r > 0) k->n += r ;
- if ((r < 0) && (errno == EINVAL)) errno = ENOSYS ;
- return r ;
-}
-
-iobufferk_input_func_ref const iobufferk_fill_f[4] =
-{
- &iobufferk_tee, &iobufferk_splice, &iobufferk_splice, &iobufferk_fill_3
-} ;
-
-#else
-
-#include <errno.h>
-#include <skalibs/iobuffer.h>
-
-static ssize_t iobufferk_inosys (iobufferk *k)
-{
- (void)k ;
- return (errno = ENOSYS, -1) ;
-}
-
-iobufferk_input_func_ref const iobufferk_fill_f[4] =
-{
- &iobufferk_inosys, &iobufferk_inosys, &iobufferk_inosys, &iobufferk_inosys
-} ;
-
-#endif