Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
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