]> git.saurik.com Git - redis.git/commitdiff
ask for confirmation before AOF is truncated
authorPieter Noordhuis <pcnoordhuis@gmail.com>
Wed, 5 May 2010 14:38:50 +0000 (16:38 +0200)
committerPieter Noordhuis <pcnoordhuis@gmail.com>
Wed, 5 May 2010 14:38:50 +0000 (16:38 +0200)
redis-check-aof.c

index 8d72e6b21addee68d7ec2f35f24a7f46c38c0d6d..050bb562c29b7d0ea3bddad07b7dcf28234d0a8b 100644 (file)
@@ -154,16 +154,26 @@ int main(int argc, char **argv) {
     }
 
     long pos = process(fp);
-    if (pos < size) {
+    long diff = size-pos;
+    if (diff > 0) {
         if (fix) {
+            char buf[2];
+            printf("This will shrink the AOF from %ld bytes, with %ld bytes, to %ld bytes\n",size,diff,pos);
+            printf("Continue? [y/N]: ");
+            if (fgets(buf,sizeof(buf),stdin) == NULL ||
+                strncasecmp(buf,"y",1) != 0) {
+                    printf("Aborting...\n");
+                    exit(1);
+            }
             if (ftruncate(fileno(fp), pos) == -1) {
-                printf("Could not truncate AOF to size %ld\n", pos);
+                printf("Failed to truncate AOF\n");
                 exit(1);
             } else {
-                printf("AOF succesfully truncated to %ld bytes\n", pos);
+                printf("Successfully truncated AOF\n");
             }
         } else {
-            printf("First invalid operation at offset %ld\n", pos);
+            printf("AOF is not valid\n");
+            exit(1);
         }
     } else {
         printf("AOF is valid\n");