+#include "fmacros.h"
#include <string.h>
+#include <stdio.h>
#include "rio.h"
#include "util.h"
static size_t rioBufferWrite(rio *r, const void *buf, size_t len) {
r->io.buffer.ptr = sdscatlen(r->io.buffer.ptr,(char*)buf,len);
r->io.buffer.pos += len;
- return len;
+ return 1;
}
/* Returns 1 or 0 for success/failure. */
static size_t rioBufferRead(rio *r, void *buf, size_t len) {
if (sdslen(r->io.buffer.ptr)-r->io.buffer.pos < len)
- return 0;
+ return 0; /* not enough buffer to return len bytes. */
memcpy(buf,r->io.buffer.ptr+r->io.buffer.pos,len);
r->io.buffer.pos += len;
return 1;
{ { NULL, 0 } } /* union for io-specific vars */
};
-rio rioInitWithFile(FILE *fp) {
- rio r = rioFileIO;
- r.io.file.fp = fp;
- return r;
+void rioInitWithFile(rio *r, FILE *fp) {
+ *r = rioFileIO;
+ r->io.file.fp = fp;
}
-rio rioInitWithBuffer(sds s) {
- rio r = rioBufferIO;
- r.io.buffer.ptr = s;
- r.io.buffer.pos = 0;
- return r;
+
+void rioInitWithBuffer(rio *r, sds s) {
+ *r = rioBufferIO;
+ r->io.buffer.ptr = s;
+ r->io.buffer.pos = 0;
}
/* Write multi bulk count in the format: "*<count>\r\n". */