]> git.saurik.com Git - redis.git/blobdiff - src/rio.c
Better syncio.c with millisecond resolution.
[redis.git] / src / rio.c
index e69d939f2e9a980a498e48d76f956809ed94ccef..95b1ee7e6042f9f97e28691ffc9d95cee2fb3df3 100644 (file)
--- a/src/rio.c
+++ b/src/rio.c
@@ -1,4 +1,6 @@
+#include "fmacros.h"
 #include <string.h>
+#include <stdio.h>
 #include "rio.h"
 #include "util.h"
 
@@ -6,13 +8,13 @@
 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;
@@ -52,16 +54,15 @@ static const rio rioFileIO = {
     { { 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". */