Output the representation of a Redis command. Used by the COMMAND command. */
| 4475 | |
| 4476 | /* Output the representation of a Redis command. Used by the COMMAND command. */ |
| 4477 | void addReplyCommand(client *c, struct redisCommand *cmd) { |
| 4478 | if (!cmd) { |
| 4479 | addReplyNull(c); |
| 4480 | } else { |
| 4481 | /* We are adding: command name, arg count, flags, first, last, offset, categories */ |
| 4482 | addReplyArrayLen(c, 7); |
| 4483 | addReplyBulkCString(c, cmd->name); |
| 4484 | addReplyLongLong(c, cmd->arity); |
| 4485 | |
| 4486 | int flagcount = 0; |
| 4487 | void *flaglen = addReplyDeferredLen(c); |
| 4488 | flagcount += addReplyCommandFlag(c,cmd,CMD_WRITE, "write"); |
| 4489 | flagcount += addReplyCommandFlag(c,cmd,CMD_READONLY, "readonly"); |
| 4490 | flagcount += addReplyCommandFlag(c,cmd,CMD_DENYOOM, "denyoom"); |
| 4491 | flagcount += addReplyCommandFlag(c,cmd,CMD_ADMIN, "admin"); |
| 4492 | flagcount += addReplyCommandFlag(c,cmd,CMD_PUBSUB, "pubsub"); |
| 4493 | flagcount += addReplyCommandFlag(c,cmd,CMD_NOSCRIPT, "noscript"); |
| 4494 | flagcount += addReplyCommandFlag(c,cmd,CMD_RANDOM, "random"); |
| 4495 | flagcount += addReplyCommandFlag(c,cmd,CMD_SORT_FOR_SCRIPT,"sort_for_script"); |
| 4496 | flagcount += addReplyCommandFlag(c,cmd,CMD_LOADING, "loading"); |
| 4497 | flagcount += addReplyCommandFlag(c,cmd,CMD_STALE, "stale"); |
| 4498 | flagcount += addReplyCommandFlag(c,cmd,CMD_SKIP_MONITOR, "skip_monitor"); |
| 4499 | flagcount += addReplyCommandFlag(c,cmd,CMD_SKIP_SLOWLOG, "skip_slowlog"); |
| 4500 | flagcount += addReplyCommandFlag(c,cmd,CMD_ASKING, "asking"); |
| 4501 | flagcount += addReplyCommandFlag(c,cmd,CMD_FAST, "fast"); |
| 4502 | flagcount += addReplyCommandFlag(c,cmd,CMD_NO_AUTH, "no_auth"); |
| 4503 | flagcount += addReplyCommandFlag(c,cmd,CMD_MAY_REPLICATE, "may_replicate"); |
| 4504 | if (cmdHasMovableKeys(cmd)) { |
| 4505 | addReplyStatus(c, "movablekeys"); |
| 4506 | flagcount += 1; |
| 4507 | } |
| 4508 | setDeferredSetLen(c, flaglen, flagcount); |
| 4509 | |
| 4510 | addReplyLongLong(c, cmd->firstkey); |
| 4511 | addReplyLongLong(c, cmd->lastkey); |
| 4512 | addReplyLongLong(c, cmd->keystep); |
| 4513 | |
| 4514 | addReplyCommandCategories(c,cmd); |
| 4515 | } |
| 4516 | } |
| 4517 | |
| 4518 | /* COMMAND <subcommand> <args> */ |
| 4519 | void commandCommand(client *c) { |
no test coverage detected