dnl TODO: we might need to check for the actual syntax....
+AC_MSG_CHECKING([whether your system knows about splice()])
+AC_TRY_COMPILE([
+#define _GNU_SOURCE
+#include <unistd.h>
+#include <fcntl.h>
+],
+[
+ ssize_t sent, pipesize;
+ int fd, SplicePipe[2];
+ pipesize = splice(fd, NULL,
+ SplicePipe[1], NULL,
+ 1,
+ SPLICE_F_MORE | SPLICE_F_MOVE|SPLICE_F_NONBLOCK);
+],
+ [
+ ok_splice=yes
+ AC_DEFINE(LINUX_SPLICE, [], [whether we have the linux splice api])
+ AC_MSG_RESULT([yes])
+ ],
+ [
+ ok_splice=no
+ AC_MSG_RESULT([no])
+ ]
+)
+
+
AC_CHECK_HEADERS(iconv.h)
FDB->ChunkSize =
FDB->TotalSendSize = TotalSendSize;
FDB->IOB = IO;
-#ifndef LINUX_SENDFILE
+#ifndef LINUX_SPLICE
FDB->ChunkBuffer = NewStrBufPlain(NULL, TotalSendSize + 1);
#else
pipe(FDB->SplicePipe);
void FDIOBufferDelete(FDIOBuffer *FDB)
{
-#ifndef LINUX_SENDFILE
+#ifndef LINUX_SPLICE
FreeStrBuf(&FDB->ChunkBuffer);
#else
close(FDB->SplicePipe[0]);
int FileSendChunked(FDIOBuffer *FDB, const char **Err)
{
-#ifdef LINUX_SENDFILE
+#ifdef LINUX_SPLICE
ssize_t sent;
sent = sendfile(FDB->IOB->fd, FDB->OtherFD, &FDB->TotalSentAlready, FDB->ChunkSendRemain);
if (sent == -1)
{
ssize_t sent, pipesize;
-#ifdef LINUX_SENDFILE
+#ifdef LINUX_SPLICE
pipesize = splice(FDB->IOB->fd, NULL,
FDB->SplicePipe[1], NULL,