From e8e30bc40289e43cbd07f532d4ca4c16e03f239c Mon Sep 17 00:00:00 2001 From: antirez Date: Tue, 17 Sep 2019 18:57:24 +0200 Subject: [PATCH] RESP3: bool and null values in RESP -> human readable conversion. --- src/scripting.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/scripting.c b/src/scripting.c index 9ab1e7ab3..b76ff278a 100644 --- a/src/scripting.c +++ b/src/scripting.c @@ -2155,6 +2155,8 @@ char *ldbRedisProtocolToHuman_Status(sds *o, char *reply); char *ldbRedisProtocolToHuman_MultiBulk(sds *o, char *reply); char *ldbRedisProtocolToHuman_Set(sds *o, char *reply); char *ldbRedisProtocolToHuman_Map(sds *o, char *reply); +char *ldbRedisProtocolToHuman_Null(sds *o, char *reply); +char *ldbRedisProtocolToHuman_Bool(sds *o, char *reply); /* Get Redis protocol from 'reply' and appends it in human readable form to * the passed SDS string 'o'. @@ -2171,6 +2173,8 @@ char *ldbRedisProtocolToHuman(sds *o, char *reply) { case '*': p = ldbRedisProtocolToHuman_MultiBulk(o,reply); break; case '~': p = ldbRedisProtocolToHuman_Set(o,reply); break; case '%': p = ldbRedisProtocolToHuman_Map(o,reply); break; + case '_': p = ldbRedisProtocolToHuman_Null(o,reply); break; + case '#': p = ldbRedisProtocolToHuman_Bool(o,reply); break; } return p; } @@ -2259,6 +2263,21 @@ char *ldbRedisProtocolToHuman_Map(sds *o, char *reply) { return p; } +char *ldbRedisProtocolToHuman_Null(sds *o, char *reply) { + char *p = strchr(reply+1,'\r'); + *o = sdscatlen(*o,"(null)",6); + return p+2; +} + +char *ldbRedisProtocolToHuman_Bool(sds *o, char *reply) { + char *p = strchr(reply+1,'\r'); + if (reply[1] == 't') + *o = sdscatlen(*o,"#true",5); + else + *o = sdscatlen(*o,"#false",6); + return p+2; +} + /* Log a Redis reply as debugger output, in an human readable format. * If the resulting string is longer than 'len' plus a few more chars * used as prefix, it gets truncated. */