]> git.saurik.com Git - redis.git/blobdiff - src/rdb.c
sds.c single quotes support
[redis.git] / src / rdb.c
index 9bf470aa26e6a79aba46680c26a0a9a6cbd70d48..d2d54807e350792b149cafc97b8f26858224e636 100644 (file)
--- a/src/rdb.c
+++ b/src/rdb.c
@@ -1,3 +1,6 @@
+#include "redis.h"
+#include "lzf.h"    /* LZF compression library */
+
 #include <math.h>
 #include <sys/types.h>
 #include <sys/time.h>
@@ -5,8 +8,6 @@
 #include <sys/wait.h>
 #include <arpa/inet.h>
 #include <sys/stat.h>
-#include "rdb.h"
-#include "lzf.h" /* LZF compression library */
 
 static int rdbWriteRaw(rio *rdb, void *p, size_t len) {
     if (rdb && rioWrite(rdb,p,len) == 0)
@@ -284,7 +285,7 @@ int rdbSaveStringObject(rio *rdb, robj *obj) {
     if (obj->encoding == REDIS_ENCODING_INT) {
         return rdbSaveLongLongAsStringObject(rdb,(long)obj->ptr);
     } else {
-        redisAssert(obj->encoding == REDIS_ENCODING_RAW);
+        redisAssertWithInfo(NULL,obj,obj->encoding == REDIS_ENCODING_RAW);
         return rdbSaveRawString(rdb,obj->ptr,sdslen(obj->ptr));
     }
 }
@@ -553,7 +554,7 @@ int rdbSaveObject(rio *rdb, robj *o) {
  * we could switch to a faster solution. */
 off_t rdbSavedObjectLen(robj *o) {
     int len = rdbSaveObject(NULL,o);
-    redisAssert(len != -1);
+    redisAssertWithInfo(NULL,o,len != -1);
     return len;
 }
 
@@ -597,7 +598,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++) {
@@ -947,19 +948,24 @@ int rdbLoad(char *filename) {
     rio rdb;
 
     fp = fopen(filename,"r");
-    if (!fp) return REDIS_ERR;
-    rdb = rioInitWithFile(fp);
+    if (!fp) {
+        errno = ENOENT;
+        return REDIS_ERR;
+    }
+    rioInitWithFile(&rdb,fp);
     if (rioRead(&rdb,buf,9) == 0) goto eoferr;
     buf[9] = '\0';
     if (memcmp(buf,"REDIS",5) != 0) {
         fclose(fp);
         redisLog(REDIS_WARNING,"Wrong signature trying to load DB from file");
+        errno = EINVAL;
         return REDIS_ERR;
     }
     rdbver = atoi(buf+5);
     if (rdbver < 1 || rdbver > 2) {
         fclose(fp);
         redisLog(REDIS_WARNING,"Can't handle RDB format version %d",rdbver);
+        errno = EINVAL;
         return REDIS_ERR;
     }