From: antirez Date: Thu, 22 Sep 2011 14:00:40 +0000 (+0200) Subject: rioInitWithFile nad rioInitWithBuffer functions now take a rio structure pointer... X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/f96a8a8054b3b699c2fba797bdcd203dda1168ce?ds=sidebyside rioInitWithFile nad rioInitWithBuffer functions now take a rio structure pointer to avoid copying a structure to return value to the caller. --- diff --git a/src/aof.c b/src/aof.c index b86357de..0dcf905e 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 c6fc44b1..13eb7b5b 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 9bf470aa..be369636 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 ebe24a3d..f695a482 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 65442381..2a830eb5 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);