Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
cfcd5d6d
Commit
cfcd5d6d
authored
Nov 03, 2010
by
Pieter Noordhuis
Browse files
Add proper numbering for multi bulk replies in redis-cli
parent
7fc4ce13
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/redis-cli.c
View file @
cfcd5d6d
...
...
@@ -157,22 +157,18 @@ static sds cliFormatReply(redisReply *r, char *prefix) {
sds
out
=
sdsempty
();
switch
(
r
->
type
)
{
case
REDIS_REPLY_ERROR
:
out
=
sdscat
(
out
,
prefix
);
if
(
config
.
tty
)
out
=
sdscat
(
out
,
"(error) "
);
out
=
sdscatprintf
(
out
,
"%s
\n
"
,
r
->
str
);
break
;
case
REDIS_REPLY_STATUS
:
out
=
sdscat
(
out
,
prefix
);
out
=
sdscat
(
out
,
r
->
str
);
out
=
sdscat
(
out
,
"
\n
"
);
break
;
case
REDIS_REPLY_INTEGER
:
out
=
sdscat
(
out
,
prefix
);
if
(
config
.
tty
)
out
=
sdscat
(
out
,
"(integer) "
);
out
=
sdscatprintf
(
out
,
"%lld
\n
"
,
r
->
integer
);
break
;
case
REDIS_REPLY_STRING
:
out
=
sdscat
(
out
,
prefix
);
if
(
config
.
raw_output
||
!
config
.
tty
)
{
out
=
sdscatlen
(
out
,
r
->
str
,
r
->
len
);
}
else
{
...
...
@@ -183,23 +179,44 @@ static sds cliFormatReply(redisReply *r, char *prefix) {
}
break
;
case
REDIS_REPLY_NIL
:
out
=
sdscat
(
out
,
prefix
);
out
=
sdscat
(
out
,
"(nil)
\n
"
);
break
;
case
REDIS_REPLY_ARRAY
:
if
(
r
->
elements
==
0
)
{
out
=
sdscat
(
out
,
prefix
);
out
=
sdscat
(
out
,
"(empty list or set)
\n
"
);
}
else
{
unsigned
int
i
;
unsigned
int
i
,
idxlen
=
0
;
char
_prefixlen
[
16
];
char
_prefixfmt
[
16
];
sds
_prefix
;
sds
tmp
;
/* Calculate chars needed to represent the largest index */
i
=
r
->
elements
;
do
{
idxlen
++
;
i
/=
10
;
}
while
(
i
);
/* Prefix for nested multi bulks should grow with idxlen+2 spaces */
memset
(
_prefixlen
,
' '
,
idxlen
+
2
);
_prefixlen
[
idxlen
+
2
]
=
'\0'
;
_prefix
=
sdscat
(
sdsnew
(
prefix
),
_prefixlen
);
/* Setup prefix format for every entry */
snprintf
(
_prefixfmt
,
sizeof
(
_prefixfmt
),
"%%s%%%dd) "
,
idxlen
);
for
(
i
=
0
;
i
<
r
->
elements
;
i
++
)
{
tmp
=
cliFormatReply
(
r
->
element
[
i
],
prefix
);
out
=
sdscat
(
out
,
prefix
);
/* Don't use the prefix for the first element, as the parent
* caller already prepended the index number. */
out
=
sdscatprintf
(
out
,
_prefixfmt
,
i
==
0
?
""
:
prefix
,
i
+
1
);
/* Format the multi bulk entry */
tmp
=
cliFormatReply
(
r
->
element
[
i
],
_prefix
);
out
=
sdscatlen
(
out
,
tmp
,
sdslen
(
tmp
));
sdsfree
(
tmp
);
}
sdsfree
(
_prefix
);
}
break
;
default:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment