diff options
| author | Vijay Bellur <vijay@gluster.com> | 2010-07-26 12:10:08 +0000 | 
|---|---|---|
| committer | Anand V. Avati <avati@dev.gluster.com> | 2010-07-27 01:20:12 -0700 | 
| commit | a7795fedd4ee2ed7de2dce89fd782ae20b03f6a4 (patch) | |
| tree | 60e173fcab4bbcf78060755b93dda83e2b707a42 /cli/src/cli.c | |
| parent | f803fae036177c3b9d9513f5b6300d426366eb62 (diff) | |
cli: Changes to provide proper exit status for gluster commandline
Signed-off-by: Vijay Bellur <vijay@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 1205 ()
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1205
Diffstat (limited to 'cli/src/cli.c')
| -rw-r--r-- | cli/src/cli.c | 50 | 
1 files changed, 46 insertions, 4 deletions
diff --git a/cli/src/cli.c b/cli/src/cli.c index d70c67f8535..5f734d8e8f2 100644 --- a/cli/src/cli.c +++ b/cli/src/cli.c @@ -74,6 +74,7 @@  #include <fnmatch.h> +extern int connected;  /* using argp for command line parsing */  static char gf_doc[] = ""; @@ -319,6 +320,41 @@ out:  }  int +cli_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event, +                void *data) +{ +        xlator_t                *this = NULL; +        int                     ret = 0; + +        this = data; + +        switch (event) { +        case RPC_CLNT_CONNECT: +        { + +                cli_cmd_broadcast_connected (); +                gf_log (this->name, GF_LOG_TRACE, "got RPC_CLNT_CONNECT"); +               break; +        } + +        case RPC_CLNT_DISCONNECT: +        { +                gf_log (this->name, GF_LOG_TRACE, "got RPC_CLNT_DISCONNECT"); +                connected = 0; +                break; +        } + +        default: +                gf_log (this->name, GF_LOG_TRACE, +                        "got some other RPC event %d", event); +                ret = 0; +                break; +        } + +        return ret; +} + +int  parse_cmdline (int argc, char *argv[], struct cli_state *state)  {          int         ret = 0; @@ -393,8 +429,10 @@ cli_rpc_init (struct cli_state *state)          dict_t                  *options = NULL;          int                     ret = -1;          int                     port = CLI_GLUSTERD_PORT; +        xlator_t                *this = NULL; +        this = THIS;          cli_rpc_prog = &cli3_1_prog;          options = dict_new ();          if (!options) @@ -418,8 +456,11 @@ cli_rpc_init (struct cli_state *state)          if (ret)                  goto out; -        rpc = rpc_clnt_init (&rpc_cfg, options, THIS->ctx, THIS->name); +        rpc = rpc_clnt_init (&rpc_cfg, options, this->ctx, this->name); +        if (rpc) { +                ret = rpc_clnt_register_notify (rpc, cli_rpc_notify, this); +        }  out:          return rpc;  } @@ -459,6 +500,10 @@ main (int argc, char *argv[])          if (ret)                  goto out; +        global_rpc = cli_rpc_init (&state); +        if (!global_rpc) +                goto out; +          state.ctx = ctx;          global_state = &state; @@ -474,9 +519,6 @@ main (int argc, char *argv[])          if (ret)                  goto out; -        global_rpc = cli_rpc_init (&state); -        if (!global_rpc) -                goto out;          ret = cli_input_init (&state);          if (ret)  | 
