diff options
Diffstat (limited to 'cli/src')
| -rw-r--r-- | cli/src/cli-cmd-parser.c | 19 | ||||
| -rw-r--r-- | cli/src/cli-cmd-volume.c | 10 | ||||
| -rw-r--r-- | cli/src/cli.h | 3 | 
3 files changed, 27 insertions, 5 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index ccae1ada981..6539b622dc0 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -2486,6 +2486,17 @@ gsyncd_url_check(const char *w)  }  static gf_boolean_t +valid_slave_gsyncd_url(const char *w) +{ +    if (strstr(w, ":::")) +        return _gf_false; +    else if (strstr(w, "::")) +        return _gf_true; +    else +        return _gf_false; +} + +static gf_boolean_t  gsyncd_glob_check(const char *w)  {      return !!strpbrk(w, "*?["); @@ -2708,7 +2719,8 @@ out:  }  int32_t -cli_cmd_gsync_set_parse(const char **words, int wordcount, dict_t **options) +cli_cmd_gsync_set_parse(const char **words, int wordcount, dict_t **options, +                        char **errstr)  {      int32_t ret = -1;      dict_t *dict = NULL; @@ -2797,8 +2809,11 @@ cli_cmd_gsync_set_parse(const char **words, int wordcount, dict_t **options)      if (masteri && gsyncd_url_check(words[masteri]))          goto out; -    if (slavei && !glob && !gsyncd_url_check(words[slavei])) + +    if (slavei && !glob && !valid_slave_gsyncd_url(words[slavei])) { +        gf_asprintf(errstr, "Invalid slave url: %s", words[slavei]);          goto out; +    }      w = str_getunamb(words[cmdi], opwords);      if (!w) diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index e711608ed80..ab2f18bd679 100644 --- a/cli/src/cli-cmd-volume.c +++ b/cli/src/cli-cmd-volume.c @@ -2138,6 +2138,7 @@ cli_cmd_volume_gsync_set_cbk(struct cli_state *state, struct cli_cmd_word *word,      rpc_clnt_procedure_t *proc = NULL;      call_frame_t *frame = NULL;      cli_local_t *local = NULL; +    char *errstr = NULL;  #if (USE_EVENTS)      int ret1 = -1;      int cmd_type = -1; @@ -2155,9 +2156,14 @@ cli_cmd_volume_gsync_set_cbk(struct cli_state *state, struct cli_cmd_word *word,          goto out;      } -    ret = cli_cmd_gsync_set_parse(words, wordcount, &options); +    ret = cli_cmd_gsync_set_parse(words, wordcount, &options, &errstr);      if (ret) { -        cli_usage_out(word->pattern); +        if (errstr) { +            cli_err("%s", errstr); +            GF_FREE(errstr); +        } else { +            cli_usage_out(word->pattern); +        }          parse_err = 1;          goto out;      } diff --git a/cli/src/cli.h b/cli/src/cli.h index 542aedd66f7..7166991a7ff 100644 --- a/cli/src/cli.h +++ b/cli/src/cli.h @@ -266,7 +266,8 @@ int32_t  cli_cmd_volume_reset_parse(const char **words, int wordcount, dict_t **opt);  int32_t -cli_cmd_gsync_set_parse(const char **words, int wordcount, dict_t **opt); +cli_cmd_gsync_set_parse(const char **words, int wordcount, dict_t **opt, +                        char **errstr);  int32_t  cli_cmd_quota_parse(const char **words, int wordcount, dict_t **opt);  | 
