diff options
| author | Amar Tumballi <amarts@redhat.com> | 2012-04-23 11:11:43 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vijay@gluster.com> | 2012-04-25 00:45:51 -0700 | 
| commit | 3f35280a364bd35293d3e5804eb2a659a7f174b1 (patch) | |
| tree | e400432d3460aaacbdc4e6675978bd1c2c94e4ef /cli/src | |
| parent | 90d5d569b5a2333094ba8741bb29fe040b695b23 (diff) | |
cli: implement a fn 'cli_err()' to send error messages to 'stderr'
we were using 'cli_out()' to send all the possible msgs, which is not
very friendly with scripts, because if one want to get only valid
output with "<command> 2>/error.log 1>/proper-info.log"
Change-Id: I008ebcbd90935c41dbfc1bd2adeb094ed21116cb
Signed-off-by: Amar Tumballi <amarts@redhat.com>
BUG: 815194
Reviewed-on: http://review.gluster.com/3208
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaushal M <kaushal@redhat.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
Diffstat (limited to 'cli/src')
| -rw-r--r-- | cli/src/cli-rl.c | 36 | ||||
| -rw-r--r-- | cli/src/cli-rpc-ops.c | 12 | ||||
| -rw-r--r-- | cli/src/cli.c | 26 | ||||
| -rw-r--r-- | cli/src/cli.h | 9 | 
4 files changed, 73 insertions, 10 deletions
diff --git a/cli/src/cli-rl.c b/cli/src/cli-rl.c index 9a37a77de5e..f9bf7c81923 100644 --- a/cli/src/cli-rl.c +++ b/cli/src/cli-rl.c @@ -48,7 +48,6 @@ cli_rl_out (struct cli_state *state, const char *fmt, va_list ap)  {          int tmp_rl_point = rl_point;          int            n = rl_end; -        int            i = 0;          int            ret = 0;          if (rl_end >= 0 ) { @@ -56,12 +55,7 @@ cli_rl_out (struct cli_state *state, const char *fmt, va_list ap)                  rl_redisplay ();          } -        printf ("\r"); - -        for (i = 0; i <= strlen (state->prompt); i++) -                printf (" "); - -        printf ("\r"); +        printf ("\r%*s\r", (int)strlen (state->prompt), "");          ret = vprintf (fmt, ap); @@ -77,6 +71,34 @@ cli_rl_out (struct cli_state *state, const char *fmt, va_list ap)          return ret;  } +int +cli_rl_err (struct cli_state *state, const char *fmt, va_list ap) +{ +        int tmp_rl_point = rl_point; +        int            n = rl_end; +        int            ret = 0; + +        if (rl_end >= 0 ) { +                rl_kill_text (0, rl_end); +                rl_redisplay (); +        } + +        fprintf (stderr, "\r%*s\r", (int)strlen (state->prompt), ""); + +        ret = vfprintf (stderr, fmt, ap); + +        fprintf (stderr, "\n"); +        fflush(stderr); + +        if (n) { +                rl_do_undo (); +                rl_point = tmp_rl_point; +                rl_reset_line_state (); +        } + +        return ret; +} +  void  cli_rl_process_line (char *line) diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index 790330240fd..9487badb6f1 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -183,7 +183,11 @@ gf_cli3_1_probe_cbk (struct rpc_req *req, struct iovec *iov,                  goto out;          }  #endif -        cli_out ("%s", msg); +        if (!rsp.op_ret) +                cli_out ("%s", msg); +        else +                cli_err ("%s", msg); +          ret = rsp.op_ret;  out: @@ -256,7 +260,11 @@ gf_cli3_1_deprobe_cbk (struct rpc_req *req, struct iovec *iov,                  goto out;          }  #endif -        cli_out ("%s", msg); +        if (!rsp.op_ret) +                cli_out ("%s", msg); +        else +                cli_err ("%s", msg); +          ret = rsp.op_ret;  out: diff --git a/cli/src/cli.c b/cli/src/cli.c index 7a490fed2b9..6a5ecf698c9 100644 --- a/cli/src/cli.c +++ b/cli/src/cli.c @@ -450,11 +450,35 @@ cli_usage_out (const char *usage)          if (!usage || usage[0] == '\0')                  return -1; -        cli_out ("Usage: %s", usage); +        cli_err ("Usage: %s", usage);          return 0;  }  int +_cli_err (const char *fmt, ...) +{ +        struct cli_state *state = NULL; +        va_list           ap; +        int               ret = 0; + +        state = global_state; + +        va_start (ap, fmt); + +#ifdef HAVE_READLINE +        if (state->rl_enabled && !state->rl_processing) +                return cli_rl_err(state, fmt, ap); +#endif + +        ret = vfprintf (stderr, fmt, ap); +        fprintf (stderr, "\n"); +        va_end (ap); + +        return ret; +} + + +int  _cli_out (const char *fmt, ...)  {          struct cli_state *state = NULL; diff --git a/cli/src/cli.h b/cli/src/cli.h index f0048beae00..0b769812c5d 100644 --- a/cli/src/cli.h +++ b/cli/src/cli.h @@ -177,10 +177,12 @@ int cli_cmd_process_line (struct cli_state *state, const char *line);  int cli_rl_enable (struct cli_state *state);  int cli_rl_out (struct cli_state *state, const char *fmt, va_list ap); +int cli_rl_err (struct cli_state *state, const char *fmt, va_list ap);  int cli_usage_out (const char *usage);  int _cli_out (const char *fmt, ...); +int _cli_err (const char *fmt, ...);  #define cli_out(fmt...) do {                       \                  FMT_WARN (fmt);                    \ @@ -189,6 +191,13 @@ int _cli_out (const char *fmt, ...);                                                     \          } while (0) +#define cli_err(fmt...) do {                       \ +                FMT_WARN (fmt);                    \ +                                                   \ +                _cli_err(fmt);                     \ +                                                   \ +        } while (0) +  int  cli_submit_request (void *req, call_frame_t *frame,                      rpc_clnt_prog_t *prog,  | 
