]> git.saurik.com Git - redis.git/blobdiff - redis-cli.c
Version is now 2.1.1
[redis.git] / redis-cli.c
index 22a09e79693d2da1c5473a780a95aee72f2371f1..279bf10ca26ee08a33a701817fcc76a989e293fe 100644 (file)
@@ -54,6 +54,7 @@ static struct config {
     long repeat;
     int dbnum;
     int interactive;
+    int shutdown;
     int monitor_mode;
     int pubsub_mode;
     int raw_output;
@@ -112,8 +113,8 @@ static struct redisCommand cmdTable[] = {
     {"zincrby",4,CMDFLAG_NONE},
     {"zrem",3,CMDFLAG_NONE},
     {"zremrangebyscore",4,CMDFLAG_NONE},
-    {"zmerge",-3,CMDFLAG_NONE},
-    {"zmergeweighed",-4,CMDFLAG_NONE},
+    {"zunion",-4,CMDFLAG_NONE},
+    {"zinter",-4,CMDFLAG_NONE},
     {"zrange",-4,CMDFLAG_NONE},
     {"zrank",3,CMDFLAG_NONE},
     {"zrevrank",3,CMDFLAG_NONE},
@@ -174,6 +175,8 @@ static struct redisCommand cmdTable[] = {
     {"psubscribe",-2,CMDFLAG_NONE},
     {"punsubscribe",-1,CMDFLAG_NONE},
     {"publish",3,CMDFLAG_NONE},
+    {"watch",-2,CMDFLAG_NONE},
+    {"unwatch",1,CMDFLAG_NONE},
     {NULL,0,CMDFLAG_NONE}
 };
 
@@ -313,7 +316,10 @@ static int cliReadMultiBulkReply(int fd) {
 static int cliReadReply(int fd) {
     char type;
 
-    if (anetRead(fd,&type,1) <= 0) exit(1);
+    if (anetRead(fd,&type,1) <= 0) {
+        if (config.shutdown) return 0;
+        exit(1);
+    }
     switch(type) {
     case '-':
         printf("(error) ");
@@ -359,17 +365,19 @@ static int cliSendCommand(int argc, char **argv, int repeat) {
     int fd, j, retval = 0;
     sds cmd;
 
-    config.raw_output = (rc->flags & CMDFLAG_RAWOUTPUT);
     if (!rc) {
         fprintf(stderr,"Unknown command '%s'\n",argv[0]);
         return 1;
     }
+    config.raw_output = (rc->flags & CMDFLAG_RAWOUTPUT);
 
     if ((rc->arity > 0 && argc != rc->arity) ||
         (rc->arity < 0 && argc < -rc->arity)) {
             fprintf(stderr,"Wrong number of arguments for '%s'\n",rc->name);
             return 1;
     }
+
+    if (!strcasecmp(rc->name,"shutdown")) config.shutdown = 1;
     if (!strcasecmp(rc->name,"monitor")) config.monitor_mode = 1;
     if (!strcasecmp(rc->name,"subscribe") ||
         !strcasecmp(rc->name,"psubscribe")) config.pubsub_mode = 1;
@@ -407,6 +415,7 @@ static int cliSendCommand(int argc, char **argv, int repeat) {
         }
 
         retval = cliReadReply(fd);
+
         if (retval) {
             return retval;
         }
@@ -591,6 +600,7 @@ int main(int argc, char **argv) {
     config.hostport = 6379;
     config.repeat = 1;
     config.dbnum = 0;
+    config.shutdown = 0;
     config.interactive = 0;
     config.monitor_mode = 0;
     config.pubsub_mode = 0;