From 63ec13f022ae99c1664fbdbc9e6623903ba843af Mon Sep 17 00:00:00 2001 From: Csaba Henk Date: Wed, 15 Sep 2010 08:11:15 +0000 Subject: cli: add a simplistic option parser, convert "mode script" to "--mode=script" Signed-off-by: Csaba Henk Signed-off-by: Vijay Bellur BUG: 1570 (geosync related changes) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1570 --- cli/src/cli.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'cli/src/cli.c') diff --git a/cli/src/cli.c b/cli/src/cli.c index 58cb61bb417..4e25417f9ba 100644 --- a/cli/src/cli.c +++ b/cli/src/cli.c @@ -324,14 +324,50 @@ cli_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event, return ret; } +int +cli_opt_parse (char *opt, struct cli_state *state) +{ + char *oarg; + + oarg = strtail (opt, "mode="); + if (oarg) { + if (strcmp (oarg, "script") == 0) { + state->mode |= GLUSTER_MODE_SCRIPT; + return 0; + } + if (strcmp (oarg, "interactive") == 0) + return 0; + return -1; + } + + return -1; +} + int parse_cmdline (int argc, char *argv[], struct cli_state *state) { int ret = 0; + int i = 0; + int j = 0; + char *opt = NULL; - state->argc=argc-1; + state->argc=argc-1; state->argv=&argv[1]; + for (i = 0; i < state->argc; i++) { + opt = strtail (state->argv[i], "--"); + if (opt) { + ret = cli_opt_parse (opt, state); + if (ret == -1) { + cli_out ("unrecognized option --%s", opt); + return ret; + } + for (j = i; j < state->argc - 1; j++) + state->argv[j] = state->argv[j + 1]; + state->argc--; + } + } + return ret; } -- cgit