From: Salvatore Sanfilippo Date: Wed, 31 Oct 2012 08:29:04 +0000 (-0700) Subject: Merge pull request #726 from yamt/typo X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/021d16b6430b39f7709a70466007df1ca16867e5?hp=164d57c60d254d02d816c27f4e80cf33c5061fef Merge pull request #726 from yamt/typo fix a typo in a comment --- diff --git a/deps/linenoise/linenoise.c b/deps/linenoise/linenoise.c index 18a15cc4..4632f7de 100644 --- a/deps/linenoise/linenoise.c +++ b/deps/linenoise/linenoise.c @@ -8,34 +8,37 @@ * Does a number of crazy assumptions that happen to be true in 99.9999% of * the 2010 UNIX computers around. * + * ------------------------------------------------------------------------ + * * Copyright (c) 2010, Salvatore Sanfilippo * Copyright (c) 2010, Pieter Noordhuis * * All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright + * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * * Neither the name of Redis nor the names of its contributors may be used - * to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------------------------ * * References: * - http://invisible-island.net/xterm/ctlseqs/ctlseqs.html @@ -290,6 +293,8 @@ static int linenoisePrompt(int fd, char *buf, size_t buflen, const char *prompt) size_t len = 0; size_t cols = getColumns(); int history_index = 0; + size_t old_pos; + size_t diff; buf[0] = '\0'; buflen--; /* Make sure there is always space for the nulterm */ @@ -465,6 +470,18 @@ up_down_arrow: case 12: /* ctrl+l, clear screen */ linenoiseClearScreen(); refreshLine(fd,prompt,buf,len,pos,cols); + break; + case 23: /* ctrl+w, delete previous word */ + old_pos = pos; + while (pos > 0 && buf[pos-1] == ' ') + pos--; + while (pos > 0 && buf[pos-1] != ' ') + pos--; + diff = old_pos - pos; + memmove(&buf[pos], &buf[old_pos], len-old_pos+1); + len -= diff; + refreshLine(fd,prompt,buf,len,pos,cols); + break; } } return len; diff --git a/src/config.h b/src/config.h index 617682fc..5e6d2807 100644 --- a/src/config.h +++ b/src/config.h @@ -55,6 +55,20 @@ /* Define rdb_fsync_range to sync_file_range() on Linux, otherwise we use * the plain fsync() call. */ #ifdef __linux__ +#include +#include +#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) +#if (LINUX_VERSION_CODE >= 0x020611 && __GLIBC_PREREQ(2, 6)) +#define HAVE_SYNC_FILE_RANGE 1 +#endif +#else +#if (LINUX_VERSION_CODE >= 0x020611) +#define HAVE_SYNC_FILE_RANGE 1 +#endif +#endif +#endif + +#ifdef HAVE_SYNC_FILE_RANGE #define rdb_fsync_range(fd,off,size) sync_file_range(fd,off,size,SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE) #else #define rdb_fsync_range(fd,off,size) fsync(fd) diff --git a/src/help.h b/src/help.h index 406fb224..1378b8b8 100644 --- a/src/help.h +++ b/src/help.h @@ -44,6 +44,16 @@ struct commandHelp { "Asynchronously save the dataset to disk", 9, "1.0.0" }, + { "BITCOUNT", + "key [start] [end]", + "Count set bits in a string", + 1, + "2.6.0" }, + { "BITOP", + "operation destkey key [key ...]", + "Perform bitwise operations between strings", + 1, + "2.6.0" }, { "BLPOP", "key [key ...] timeout", "Remove and get the first element in a list, or block until one is available", @@ -59,6 +69,16 @@ struct commandHelp { "Pop a value from a list, push it to another list and return it; or block until one is available", 2, "2.2.0" }, + { "CLIENT KILL", + "ip:port", + "Kill the connection of a client", + 9, + "2.4.0" }, + { "CLIENT LIST", + "-", + "Get the list of client connections", + 9, + "2.4.0" }, { "CONFIG GET", "parameter", "Get the value of a configuration parameter", @@ -111,7 +131,7 @@ struct commandHelp { "2.0.0" }, { "DUMP", "key", - "Return a serialized verison of the value stored at the specified key.", + "Return a serialized version of the value stored at the specified key.", 0, "2.6.0" }, { "ECHO", @@ -124,6 +144,11 @@ struct commandHelp { "Execute a Lua script server side", 10, "2.6.0" }, + { "EVALSHA", + "sha1 numkeys key [key ...] arg [arg ...]", + "Execute a Lua script server side", + 10, + "2.6.0" }, { "EXEC", "-", "Execute all commands issued after MULTI", @@ -575,8 +600,8 @@ struct commandHelp { 3, "1.0.0" }, { "SRANDMEMBER", - "key", - "Get a random member from a set", + "key [count]", + "Get one or multiple random members from a set", 3, "1.0.0" }, { "SREM", diff --git a/src/rdb.c b/src/rdb.c index 9190ea51..5018473e 100644 --- a/src/rdb.c +++ b/src/rdb.c @@ -1010,6 +1010,8 @@ void startLoading(FILE *fp) { /* Refresh the loading progress info */ void loadingProgress(off_t pos) { server.loading_loaded_bytes = pos; + if (server.stat_peak_memory < zmalloc_used_memory()) + server.stat_peak_memory = zmalloc_used_memory(); } /* Loading finished */ diff --git a/src/rdb.h b/src/rdb.h index 37f44745..1c07994f 100644 --- a/src/rdb.h +++ b/src/rdb.h @@ -62,9 +62,6 @@ #define REDIS_RDB_OPCODE_SELECTDB 254 #define REDIS_RDB_OPCODE_EOF 255 -/* Test if a type is an opcode. */ -#define rdbIsOpcode(t) (t >= 253 && t <= 255) - int rdbSaveType(rio *rdb, unsigned char type); int rdbLoadType(rio *rdb); int rdbSaveTime(rio *rdb, time_t t); diff --git a/src/t_string.c b/src/t_string.c index 1e29a613..ba427961 100644 --- a/src/t_string.c +++ b/src/t_string.c @@ -26,7 +26,7 @@ void setGenericCommand(redisClient *c, int nx, robj *key, robj *val, robj *expir if (unit == UNIT_SECONDS) milliseconds *= 1000; } - if (lookupKeyWrite(c->db,key) != NULL && nx) { + if (nx && lookupKeyWrite(c->db,key) != NULL) { addReply(c,shared.czero); return; }