diff options
| author | Kaushik BV <kaushikbv@gluster.com> | 2011-04-21 06:55:44 +0000 | 
|---|---|---|
| committer | Anand Avati <avati@gluster.com> | 2011-04-22 03:52:24 -0700 | 
| commit | 49603aec03e98a2a38fad66627593b69b6269cbf (patch) | |
| tree | c779d7f8be2e4477d057f17d49713fdb007639f6 /cli/src/registry.c | |
| parent | b5848ed21b9e718011a8f3f3870c4ed978ff17a5 (diff) | |
cli: changes in struct cli_cmd to disable gluster command at run-time
Signed-off-by: Kaushik BV <kaushikbv@gluster.com>
Signed-off-by: Anand Avati <avati@gluster.com>
BUG: 2744 (make geo-replication package friendly)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2744
Diffstat (limited to 'cli/src/registry.c')
| -rw-r--r-- | cli/src/registry.c | 37 | 
1 files changed, 23 insertions, 14 deletions
diff --git a/cli/src/registry.c b/cli/src/registry.c index a65e26ecaee..8fa116a48c7 100644 --- a/cli/src/registry.c +++ b/cli/src/registry.c @@ -362,31 +362,40 @@ cli_cmd_ingest (struct cli_cmd_tree *tree, char **tokens, cli_cmd_cbk_t *cbkfn,  int -cli_cmd_register (struct cli_cmd_tree *tree, const char *template, -                  cli_cmd_cbk_t cbk, const char *desc) +cli_cmd_register (struct cli_cmd_tree *tree, struct cli_cmd *cmd)  {          char **tokens = NULL;          int    ret = 0; -        if (!template) -                return -1; +        GF_ASSERT (cmd) -        tokens = cli_cmd_tokenize (template); -        if (!tokens) -                return -1; +        if (cmd->reg_cbk) +                cmd->reg_cbk (cmd); -        ret = cli_cmd_ingest (tree, tokens, cbk, desc, template); -        if (ret) -                goto err; +        if (cmd->disable) { +                ret = 0; +                goto out; +        } -        if (tokens) -                cli_cmd_tokens_destroy (tokens); +        tokens = cli_cmd_tokenize (cmd->pattern); +        if (!tokens) { +                ret = -1; +                goto out; +        } -        return 0; -err: +        ret = cli_cmd_ingest (tree, tokens, cmd->cbk, cmd->desc, cmd->pattern); +        if (ret) { +                ret = -1; +                goto out; +        } + +        ret = 0; + +out:          if (tokens)                  cli_cmd_tokens_destroy (tokens); +        gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret);          return ret;  }  | 
