[dovecot-cvs] dovecot/src/lib sendfile-util.c,1.2,1.3
cras at procontrol.fi
cras at procontrol.fi
Tue Jan 14 22:59:59 EET 2003
Update of /home/cvs/dovecot/src/lib
In directory danu:/tmp/cvs-serv13771/src/lib
Modified Files:
sendfile-util.c
Log Message:
Support for Solaris sendfilev(). Entirely untested, hope it works.
Index: sendfile-util.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib/sendfile-util.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- sendfile-util.c 28 Oct 2002 03:35:05 -0000 1.2
+++ sendfile-util.c 14 Jan 2003 20:59:57 -0000 1.3
@@ -68,6 +68,34 @@
else
return -1;
}
+
+#elif defined (HAVE_SOLARIS_SENDFILEV)
+
+#include <sys/sendfile.h>
+
+ssize_t safe_sendfile(int out_fd, int in_fd, uoff_t *offset, size_t count)
+{
+ struct sendfilevec vec;
+ size_t sbytes;
+ ssize_t ret;
+
+ i_assert(count <= SSIZE_T_MAX);
+
+ vec.sfv_fd = in_fd;
+ vec.sfv_flag = 0;
+ vec.sfv_off = *offset;
+ vec.sfv_len = count;
+
+ ret = sendfilev(out_fd, &vec, 1, &sbytes);
+
+ *offset += sbytes;
+
+ if (ret >= 0 || (ret < 0 && errno == EAGAIN && sbytes > 0))
+ return (ssize_t)sbytes;
+ else
+ return -1;
+}
+
#else
ssize_t safe_sendfile(int out_fd __attr_unused__, int in_fd __attr_unused__,
uoff_t *offset __attr_unused__,
@@ -76,4 +104,5 @@
errno = EINVAL;
return -1;
}
+
#endif
More information about the dovecot-cvs
mailing list