From 7e91f971f7ab63dc5bb60dc0ec5e1ea76efce939 Mon Sep 17 00:00:00 2001 From: Pieter Noordhuis Date: Sun, 1 Aug 2010 23:06:00 +0200 Subject: [PATCH] Add support for domain sockets to redis-cli --- src/redis-cli.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/redis-cli.c b/src/redis-cli.c index dac828625..4dafba325 100644 --- a/src/redis-cli.c +++ b/src/redis-cli.c @@ -52,6 +52,7 @@ static struct config { char *hostip; int hostport; + char *hostsocket; long repeat; int dbnum; int argn_from_stdin; @@ -72,9 +73,21 @@ static int cliConnect(void) { static int fd = ANET_ERR; if (fd == ANET_ERR) { - fd = anetTcpConnect(err,config.hostip,config.hostport); + if (config.hostsocket == NULL) { + fd = anetTcpConnect(err,config.hostip,config.hostport); + } else { + fd = anetUnixConnect(err,config.hostsocket); + if (fd == ANET_ERR) { + fprintf(stderr, "Could not connect to Redis at %s: %s", config.hostsocket, err); + return -1; + } + } if (fd == ANET_ERR) { - fprintf(stderr, "Could not connect to Redis at %s:%d: %s", config.hostip, config.hostport, err); + fprintf(stderr,"Could not connect to Redis at "); + if (config.hostsocket == NULL) + fprintf(stderr,"%s:%d: %s",config.hostip,config.hostport,err); + else + fprintf(stderr,"%s: %s",config.hostsocket,err); return -1; } anetTcpNoDelay(NULL,fd); @@ -304,6 +317,9 @@ static int parseOptions(int argc, char **argv) { } else if (!strcmp(argv[i],"-p") && !lastarg) { config.hostport = atoi(argv[i+1]); i++; + } else if (!strcmp(argv[i],"-s") && !lastarg) { + config.hostsocket = argv[i+1]; + i++; } else if (!strcmp(argv[i],"-r") && !lastarg) { config.repeat = strtoll(argv[i+1],NULL,10); i++; @@ -345,8 +361,8 @@ static sds readArgFromStdin(void) { } static void usage() { - fprintf(stderr, "usage: redis-cli [-iv] [-h host] [-p port] [-a authpw] [-r repeat_times] [-n db_num] cmd arg1 arg2 arg3 ... argN\n"); - fprintf(stderr, "usage: echo \"argN\" | redis-cli -c [-h host] [-p port] [-a authpw] [-r repeat_times] [-n db_num] cmd arg1 arg2 ... arg(N-1)\n"); + fprintf(stderr, "usage: redis-cli [-iv] [-h host] [-p port] [-s /path/to/socket] [-a authpw] [-r repeat_times] [-n db_num] cmd arg1 arg2 arg3 ... argN\n"); + fprintf(stderr, "usage: echo \"argN\" | redis-cli -c [-h host] [-p port] [-s /path/to/socket] [-a authpw] [-r repeat_times] [-n db_num] cmd arg1 arg2 ... arg(N-1)\n"); fprintf(stderr, "\nIf a pipe from standard input is detected this data is used as last argument.\n\n"); fprintf(stderr, "example: cat /etc/passwd | redis-cli set my_passwd\n"); fprintf(stderr, "example: redis-cli get my_passwd\n"); @@ -465,6 +481,7 @@ int main(int argc, char **argv) { config.hostip = "127.0.0.1"; config.hostport = 6379; + config.hostsocket = NULL; config.repeat = 1; config.dbnum = 0; config.argn_from_stdin = 0; -- GitLab