summaryrefslogtreecommitdiffstats
path: root/cli/src/cli-cmd-parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'cli/src/cli-cmd-parser.c')
-rw-r--r--cli/src/cli-cmd-parser.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c
index 70a6327511e..4a395c849a9 100644
--- a/cli/src/cli-cmd-parser.c
+++ b/cli/src/cli-cmd-parser.c
@@ -1121,11 +1121,11 @@ int32_t
cli_cmd_gsync_set_parse (const char **words, int wordcount, dict_t **options)
{
int32_t ret = -1;
- int32_t config_type = 0;
dict_t *dict = NULL;
gf1_cli_gsync_set type = GF_GSYNC_OPTION_TYPE_NONE;
char *append_str = NULL;
size_t append_len = 0;
+ char *subop = NULL;
int i = 0;
GF_ASSERT (words);
@@ -1192,34 +1192,32 @@ cli_cmd_gsync_set_parse (const char **words, int wordcount, dict_t **options)
}
if ((strcmp (words[2], "config")) == 0) {
- type = GF_GSYNC_OPTION_TYPE_CONFIGURE;
+ type = GF_GSYNC_OPTION_TYPE_CONFIG;
switch (wordcount) {
case 5:
- config_type = GF_GSYNC_OPTION_TYPE_CONFIG_GET_ALL;
+ subop = gf_strdup ("get-all");
break;
case 6:
if (words[5][0] == '!') {
- config_type = GF_GSYNC_OPTION_TYPE_CONFIG_DEL;
- i = 1;
- } else {
- config_type = GF_GSYNC_OPTION_TYPE_CONFIG_GET;
- i = 0;
- }
+ (words[5])++;
+ subop = gf_strdup ("del");
+ } else
+ subop = gf_strdup ("get");
- ret = dict_set_str (dict, "op_name", ((char *)words[5]) + i);
+ ret = dict_set_str (dict, "op_name", ((char *)words[5]));
if (ret < 0)
goto out;
break;
default:
- config_type = GF_GSYNC_OPTION_TYPE_CONFIG_SET;
-
if (wordcount < 7) {
ret = -1;
goto out;
}
+ subop = gf_strdup ("set");
+
ret = dict_set_str (dict, "op_name", (char *)words[5]);
if (ret < 0)
goto out;
@@ -1246,9 +1244,10 @@ cli_cmd_gsync_set_parse (const char **words, int wordcount, dict_t **options)
goto out;
}
- ret = dict_set_int32 (dict, "config_type", config_type);
- if (ret < 0)
+ if (!subop || dict_set_dynstr (dict, "subop", subop) != 0) {
+ ret = -1;
goto out;
+ }
} else {
ret = -1;
goto out;