From 2084c0e3d748b7e28d2fc9749ad9d1e2bf63208c Mon Sep 17 00:00:00 2001 From: Csaba Henk Date: Tue, 24 Apr 2012 11:53:56 +0200 Subject: cli: let commands specify the exit value in batch mode Old behavior: when cli is ran in batch mode (sequence of commands are fed to it in stdin), if a command returns an error (ie. -1), the cli exits upon it with 255 (-1 on 8 bit). New behavior: consider any non-zero return from cli commands as error and use the negative of that return value as exit value, thus giving control to cli commands over the exit value, while (as of the existing command set) adhering to the convention of exiting with 1 on error. Spotted upon stumbling upon mount/umount commands which did want to exit with 1 on error but that was not possible as of old behavior. Change-Id: I6f41191cdc718c3e676cfae1e404152f4cb715c5 BUG: 765214 Signed-off-by: Csaba Henk Reviewed-on: http://review.gluster.com/3218 Tested-by: Gluster Build System Reviewed-by: Amar Tumballi Reviewed-by: Anand Avati --- cli/src/cli-rpc-ops.c | 4 ++-- cli/src/input.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index 2ab13261a..7cc85e483 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -5741,7 +5741,7 @@ gf_cli3_1_mount_cbk (struct rpc_req *req, struct iovec *iov, /* weird sounding but easy to parse... */ cli_err ("%d : failed with this errno (%s)", rsp.op_errno, strerror (rsp.op_errno)); - ret = 1; + ret = -1; } out: @@ -5805,7 +5805,7 @@ gf_cli3_1_umount_cbk (struct rpc_req *req, struct iovec *iov, ret = 0; else { cli_err ("umount failed"); - ret = 1; + ret = -1; } out: diff --git a/cli/src/input.c b/cli/src/input.c index a88d35874..004c9e300 100644 --- a/cli/src/input.c +++ b/cli/src/input.c @@ -71,11 +71,11 @@ cli_input (void *d) if (len > 0 && cmd[len - 1] == '\n') //strip trailing \n cmd[len - 1] = '\0'; ret = cli_cmd_process_line (state, cmd); - if (ret == -1 && state->mode & GLUSTER_MODE_ERR_FATAL) + if (ret != 0 && state->mode & GLUSTER_MODE_ERR_FATAL) break; } - exit (ret); + exit (-ret); return NULL; } -- cgit