return REDIS_ERR;
}
- aof = rioInitWithFile(fp);
+ rioInitWithFile(&aof,fp);
for (j = 0; j < server.dbnum; j++) {
char selectcmd[] = "*2\r\n$6\r\nSELECT\r\n";
redisDb *db = server.db+j;
return;
}
- payload = rioInitWithBuffer(c->argv[3]->ptr);
+ rioInitWithBuffer(&payload,c->argv[3]->ptr);
if (((type = rdbLoadObjectType(&payload)) == -1) ||
((obj = rdbLoadObject(type,&payload)) == NULL))
{
return;
}
- cmd = rioInitWithBuffer(sdsempty());
+ rioInitWithBuffer(&cmd,sdsempty());
redisAssert(rioWriteBulkCount(&cmd,'*',2));
redisAssert(rioWriteBulkString(&cmd,"SELECT",6));
redisAssert(rioWriteBulkLongLong(&cmd,dbid));
/* Finally the last argument that is the serailized object payload
* in the form: <type><rdb-serialized-object>. */
- payload = rioInitWithBuffer(sdsempty());
+ rioInitWithBuffer(&payload,sdsempty());
redisAssert(rdbSaveObjectType(&payload,o));
redisAssert(rdbSaveObject(&payload,o) != -1);
redisAssert(rioWriteBulkString(&cmd,payload.io.buffer.ptr,sdslen(payload.io.buffer.ptr)));
/* Serialize the object in a RDB-like format. It consist of an object type
* byte followed by the serialized object. This is understood by RESTORE. */
- payload = rioInitWithBuffer(sdsempty());
+ rioInitWithBuffer(&payload,sdsempty());
redisAssert(rdbSaveObjectType(&payload,o));
redisAssert(rdbSaveObject(&payload,o));
return REDIS_ERR;
}
- rdb = rioInitWithFile(fp);
+ rioInitWithFile(&rdb,fp);
if (rdbWriteRaw(&rdb,"REDIS0002",9) == -1) goto werr;
for (j = 0; j < server.dbnum; j++) {
fp = fopen(filename,"r");
if (!fp) return REDIS_ERR;
- rdb = rioInitWithFile(fp);
+ rioInitWithFile(&rdb,fp);
if (rioRead(&rdb,buf,9) == 0) goto eoferr;
buf[9] = '\0';
if (memcmp(buf,"REDIS",5) != 0) {
{ { 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". */
#define rioWrite(rio,buf,len) ((rio)->write((rio),(buf),(len)))
#define rioRead(rio,buf,len) ((rio)->read((rio),(buf),(len)))
-rio rioInitWithFile(FILE *fp);
-rio rioInitWithBuffer(sds s);
+void rioInitWithFile(rio *r, FILE *fp);
+void rioInitWithBuffer(rio *r, sds s);
size_t rioWriteBulkCount(rio *r, char prefix, int count);
size_t rioWriteBulkString(rio *r, const char *buf, size_t len);