From f96a8a8054b3b699c2fba797bdcd203dda1168ce Mon Sep 17 00:00:00 2001 From: antirez Date: Thu, 22 Sep 2011 16:00:40 +0200 Subject: [PATCH] rioInitWithFile nad rioInitWithBuffer functions now take a rio structure pointer to avoid copying a structure to return value to the caller. --- src/aof.c | 2 +- src/cluster.c | 8 ++++---- src/rdb.c | 4 ++-- src/rio.c | 17 ++++++++--------- src/rio.h | 4 ++-- 5 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/aof.c b/src/aof.c index b86357de5..0dcf905ee 100644 --- a/src/aof.c +++ b/src/aof.c @@ -421,7 +421,7 @@ int rewriteAppendOnlyFile(char *filename) { 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; diff --git a/src/cluster.c b/src/cluster.c index c6fc44b1a..13eb7b5bb 100644 --- a/src/cluster.c +++ b/src/cluster.c @@ -1402,7 +1402,7 @@ void restoreCommand(redisClient *c) { return; } - payload = rioInitWithBuffer(c->argv[3]->ptr); + rioInitWithBuffer(&payload,c->argv[3]->ptr); if (((type = rdbLoadObjectType(&payload)) == -1) || ((obj = rdbLoadObject(type,&payload)) == NULL)) { @@ -1453,7 +1453,7 @@ void migrateCommand(redisClient *c) { return; } - cmd = rioInitWithBuffer(sdsempty()); + rioInitWithBuffer(&cmd,sdsempty()); redisAssert(rioWriteBulkCount(&cmd,'*',2)); redisAssert(rioWriteBulkString(&cmd,"SELECT",6)); redisAssert(rioWriteBulkLongLong(&cmd,dbid)); @@ -1467,7 +1467,7 @@ void migrateCommand(redisClient *c) { /* Finally the last argument that is the serailized object payload * in the form: . */ - 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))); @@ -1544,7 +1544,7 @@ void dumpCommand(redisClient *c) { /* 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)); diff --git a/src/rdb.c b/src/rdb.c index 9bf470aa2..be369636d 100644 --- a/src/rdb.c +++ b/src/rdb.c @@ -597,7 +597,7 @@ int rdbSave(char *filename) { return REDIS_ERR; } - rdb = rioInitWithFile(fp); + rioInitWithFile(&rdb,fp); if (rdbWriteRaw(&rdb,"REDIS0002",9) == -1) goto werr; for (j = 0; j < server.dbnum; j++) { @@ -948,7 +948,7 @@ int rdbLoad(char *filename) { 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) { diff --git a/src/rio.c b/src/rio.c index ebe24a3d7..f695a4824 100644 --- a/src/rio.c +++ b/src/rio.c @@ -52,16 +52,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: "*\r\n". */ diff --git a/src/rio.h b/src/rio.h index 654423810..2a830eb57 100644 --- a/src/rio.h +++ b/src/rio.h @@ -29,8 +29,8 @@ typedef struct _rio rio; #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);