diff -r 09676b559091 -r 60870dbac94f src/server/util/writer.c --- a/src/server/util/writer.c Tue Apr 26 18:21:25 2022 +0200 +++ b/src/server/util/writer.c Sat Apr 30 20:44:38 2022 +0200 @@ -34,6 +34,16 @@ void writer_init(Writer *w, SYS_NETFD fd, char *buf, size_t len) { w->fd = fd; + w->write = (wr_writefunc)net_write; + w->buffer = buf; + w->size = len; + w->pos = 0; + w->error = 0; +} + +void writer_init_with_stream(Writer *w, void *stream, wr_writefunc writefunc, char *buf, size_t len) { + w->fd = stream; + w->write = writefunc; w->buffer = buf; w->size = len; w->pos = 0; @@ -49,7 +59,7 @@ size_t len = w->pos; while(len > 0) { - ssize_t r = net_write(w->fd, w->buffer + pos, len); + ssize_t r = w->write(w->fd, w->buffer + pos, len); if(r <= 0) { break; } @@ -105,3 +115,8 @@ w->buffer[w->pos++] = c; return 0; } + +int writer_fwrite(const void *s, size_t size, size_t nelem, Writer *out) { + int w = writer_put(out, s, size*nelem); + return w/size; +}