Output the representation of a Redis command. Used by the COMMAND command. */
| 5441 | |
| 5442 | /* Output the representation of a Redis command. Used by the COMMAND command. */ |
| 5443 | void addReplyCommand(client *c, struct redisCommand *cmd) { |
| 5444 | if (!cmd) { |
| 5445 | addReplyNull(c); |
| 5446 | } else { |
| 5447 | /* We are adding: command name, arg count, flags, first, last, offset, categories */ |
| 5448 | addReplyArrayLen(c, 7); |
| 5449 | addReplyBulkCString(c, cmd->name); |
| 5450 | addReplyLongLong(c, cmd->arity); |
| 5451 | |
| 5452 | int flagcount = 0; |
| 5453 | void *flaglen = addReplyDeferredLen(c); |
| 5454 | flagcount += addReplyCommandFlag(c,cmd,CMD_WRITE, "write"); |
| 5455 | flagcount += addReplyCommandFlag(c,cmd,CMD_READONLY, "readonly"); |
| 5456 | flagcount += addReplyCommandFlag(c,cmd,CMD_DENYOOM, "denyoom"); |
| 5457 | flagcount += addReplyCommandFlag(c,cmd,CMD_ADMIN, "admin"); |
| 5458 | flagcount += addReplyCommandFlag(c,cmd,CMD_PUBSUB, "pubsub"); |
| 5459 | flagcount += addReplyCommandFlag(c,cmd,CMD_NOSCRIPT, "noscript"); |
| 5460 | flagcount += addReplyCommandFlag(c,cmd,CMD_RANDOM, "random"); |
| 5461 | flagcount += addReplyCommandFlag(c,cmd,CMD_SORT_FOR_SCRIPT,"sort_for_script"); |
| 5462 | flagcount += addReplyCommandFlag(c,cmd,CMD_LOADING, "loading"); |
| 5463 | flagcount += addReplyCommandFlag(c,cmd,CMD_STALE, "stale"); |
| 5464 | flagcount += addReplyCommandFlag(c,cmd,CMD_SKIP_MONITOR, "skip_monitor"); |
| 5465 | flagcount += addReplyCommandFlag(c,cmd,CMD_SKIP_SLOWLOG, "skip_slowlog"); |
| 5466 | flagcount += addReplyCommandFlag(c,cmd,CMD_ASKING, "asking"); |
| 5467 | flagcount += addReplyCommandFlag(c,cmd,CMD_FAST, "fast"); |
| 5468 | flagcount += addReplyCommandFlag(c,cmd,CMD_NO_AUTH, "no_auth"); |
| 5469 | flagcount += addReplyCommandFlag(c,cmd,CMD_MAY_REPLICATE, "may_replicate"); |
| 5470 | if (cmdHasMovableKeys(cmd)) { |
| 5471 | addReplyStatus(c, "movablekeys"); |
| 5472 | flagcount += 1; |
| 5473 | } |
| 5474 | setDeferredSetLen(c, flaglen, flagcount); |
| 5475 | |
| 5476 | addReplyLongLong(c, cmd->firstkey); |
| 5477 | addReplyLongLong(c, cmd->lastkey); |
| 5478 | addReplyLongLong(c, cmd->keystep); |
| 5479 | |
| 5480 | addReplyCommandCategories(c,cmd); |
| 5481 | } |
| 5482 | } |
| 5483 | |
| 5484 | /* COMMAND <subcommand> <args> */ |
| 5485 | void commandCommand(client *c) { |
no test coverage detected