diff -r 66442f81f823 -r c7f5b062e622 src/server/util/io.c --- a/src/server/util/io.c Sat May 11 13:28:26 2013 +0200 +++ b/src/server/util/io.c Wed May 22 13:27:31 2013 +0200 @@ -42,12 +42,14 @@ IOStream native_io_funcs = { system_write, + system_writev, system_read, NULL }; IOStream net_io_funcs = { net_stream_write, + net_stream_writev, net_stream_read, net_stream_sendfile }; @@ -64,6 +66,10 @@ return write(((SystemIOStream*)st)->fd, buf, nbytes); } +ssize_t system_writev(IOStream *st, struct iovec *iovec, int iovcnt) { + return writev(((SystemIOStream*)st)->fd, iovec, iovcnt); +} + ssize_t system_read(IOStream *st, void *buf, size_t nbytes) { return read(((SystemIOStream*)st)->fd, buf, nbytes); } @@ -82,6 +88,10 @@ return write(((NetIOStream*)st)->fd, buf, nbytes); } +ssize_t net_stream_writev(IOStream *st, struct iovec *iovec, int iovcnt) { + return writev(((NetIOStream*)st)->fd, iovec, iovcnt); +} + ssize_t net_stream_read(IOStream *st, void *buf, size_t nbytes) { NetIOStream *n = (NetIOStream*)st; if(n->max_read != 0 && n->rd >= n->max_read) { @@ -124,14 +134,22 @@ return r; } +ssize_t net_writev(SYS_NETFD fd, struct iovec *iovec, int iovcnt) { + ssize_t r = ((IOStream*)fd)->writev(fd, iovec, iovcnt); + if(r < 0) { + return IO_ERROR; + } + return r; +} + ssize_t net_printf(SYS_NETFD fd, char *format, ...) { va_list arg; va_start(arg, format); char *buf; ssize_t len = vasprintf(&buf, format, arg); - net_write(fd, buf, len); + ssize_t r = net_write(fd, buf, len); free(buf); - return len; + return r; } ssize_t net_sendfile(SYS_NETFD fd, sendfiledata *sfd) {