int io_write(struct io *io, const void *buf, size_t len) { int r; r = iobuf_queue(&io->iobuf, buf, len); io_reload(io); return r; }
int iobuf_vfqueue(struct iobuf *io, const char *fmt, va_list ap) { char *buf; int len; len = vasprintf(&buf, fmt, ap); if (len == -1) return (-1); len = iobuf_queue(io, buf, len); free(buf); return (len); }
static int clamav_write(struct clamav *cl, const char *l, int f) { size_t len = (f == EOF) ? 0 : strlen(l) + 1; uint32_t n = htonl(len); if (f && iobuf_queue(&cl->iobuf, &n, sizeof(uint32_t)) != (int)sizeof(uint32_t)) { log_warn("warn: write: iobuf_queue"); return -1; } if (f != EOF && iobuf_fqueue(&cl->iobuf, "%s\n", l) != (int)len) { log_warn("warn: write: iobuf_fqueue"); return -1; } if (iobuf_flush(&cl->iobuf, cl->fd) < 0) { log_warn("warn: write: iobuf_flush"); return -1; } return 0; }