cli: cmd history echoes the last command string word twice with --mode=script

PROBLEM:

When a gluster command is executed with --mode=script option
enabled, the last word in the command string is echoed twice
in command history.

  Example:
  [2012-12-03 05:29:16.083176]  : volume start dis dis : SUCCESS

FIX:

Terminate argv with NULL when the words are shifted after omitting
"--mode=script" from it.

Change-Id: I3a2623efe02e58c97c34554988938a9299425492
BUG: 823081
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-on: http://review.gluster.org/4255
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
This commit is contained in:
Krutika Dhananjay 2012-11-27 15:13:15 +05:30 committed by Anand Avati
parent 66e34de1be
commit d0b0e59952
2 changed files with 40 additions and 0 deletions

View File

@ -382,6 +382,8 @@ parse_cmdline (int argc, char *argv[], struct cli_state *state)
}
}
state->argv[state->argc] = NULL;
return ret;
}

38
tests/bugs/bug-823081.t Executable file
View File

@ -0,0 +1,38 @@
#!/bin/bash
. $(dirname $0)/../include.rc
cleanup;
V1=patchy2
TEST glusterd
TEST pidof glusterd
logdir=`gluster --print-logdir`
function set_tail ()
{
vol=$1;
tail_success="volume create $vol $H0:$B0/${vol}1 $H0:$B0/${vol}2 : SUCCESS"
tail_failure="volume create $vol $H0:$B0/${vol}1 $H0:$B0/${vol}2 : FAILED : Volume $vol already exists"
}
set_tail $V0;
TEST $CLI volume create $V0 $H0:$B0/${V0}{1,2};
tail=`tail --lines=1 $logdir/.cmd_log_history | cut -d " " -f 5-`
TEST [[ \"$tail\" == \"$tail_success\" ]]
TEST ! $CLI volume create $V0 $H0:$B0/${V0}{1,2};
tail=`tail --lines=1 $logdir/.cmd_log_history | cut -d " " -f 5-`
TEST [[ \"$tail\" == \"$tail_failure\" ]]
set_tail $V1;
TEST gluster volume create $V1 $H0:$B0/${V1}{1,2};
tail=`tail --lines=1 $logdir/.cmd_log_history | cut -d " " -f 5-`
TEST [[ \"$tail\" == \"$tail_success\" ]]
TEST ! gluster volume create $V1 $H0:$B0/${V1}{1,2};
tail=`tail --lines=1 $logdir/.cmd_log_history | cut -d " " -f 5-`
TEST [[ \"$tail\" == \"$tail_failure\" ]]
cleanup;