Re: [Qemu-devel] [PATCH v2] tests: Use command -v instead of which(1) in shell scripts

2014-11-26 Thread Stefan Hajnoczi
On Wed, Nov 19, 2014 at 03:07:12PM +0800, Fam Zheng wrote:
 When which(1) is not installed, we would complain perl not found
 because it's the first set_prog_path check. The error message is
 wrong.
 
 Fix it by using command -v, a native way to query the existence of a
 command.
 
 Suggested-by: Eric Blake ebl...@redhat.com
 Signed-off-by: Fam Zheng f...@redhat.com
 
 ---
 v2: Use command -v as suggested by Eric. Also change a few other
 occasions of which(1) in tests/qemu-iotests/common.
 ---
  tests/qemu-iotests/common| 8 
  tests/qemu-iotests/common.config | 2 +-
  2 files changed, 5 insertions(+), 5 deletions(-)

Thanks, applied to my block-next tree:
https://github.com/stefanha/qemu/commits/block-next

Stefan


pgphGRfvooPu7.pgp
Description: PGP signature


Re: [Qemu-devel] [PATCH v2] tests: Use command -v instead of which(1) in shell scripts

2014-11-19 Thread Eric Blake
On 11/19/2014 12:07 AM, Fam Zheng wrote:
 When which(1) is not installed, we would complain perl not found
 because it's the first set_prog_path check. The error message is
 wrong.
 
 Fix it by using command -v, a native way to query the existence of a
 command.
 
 Suggested-by: Eric Blake ebl...@redhat.com
 Signed-off-by: Fam Zheng f...@redhat.com

 +++ b/tests/qemu-iotests/common.config
 @@ -47,7 +47,7 @@ export PWD=`pwd`
  # $1 = prog to look for, $2* = default pathnames if not found in $PATH
  set_prog_path()
  {
 -p=`which $1 2 /dev/null`
 +p=`command -v $1 2 /dev/null`

Reviewed-by: Eric Blake ebl...@redhat.com

  if [ -n $p -a -x $p ]; then

Unrelated: this line works because this is a /bin/bash script, but it
is non-portable.  Use of -a and -o inside [] is a mistake waiting to
happen.  For example, is [ ! $a -a $b ] supposed to be true or false
for all values of $a and $b?  Naively, this says return true if '! $a'
(a is empty) and '$b' (b is non-empty); but if $a is '(' and $b is ')'
it could also be parsed as returning the negation of whether the
parenthesized string -a is non-empty.

Use of -a and -o in [[]] is a bit better, but I still HIGHLY recommend
that constructs like this be rewritten as [ -n $p ]  [ -x $p ] for
avoidance of confusion and prevention of copy-pasting the test to
non-bash shells.  But that would be a separate patch.

-- 
Eric Blake   eblake redhat com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature


Re: [Qemu-devel] [PATCH v2] tests: Use command -v instead of which(1) in shell scripts

2014-11-19 Thread Peter Maydell
On 19 November 2014 13:19, Eric Blake ebl...@redhat.com wrote:
 Use of -a and -o in [[]] is a bit better, but I still HIGHLY recommend
 that constructs like this be rewritten as [ -n $p ]  [ -x $p ] for
 avoidance of confusion and prevention of copy-pasting the test to
 non-bash shells.  But that would be a separate patch.

Yeah, this is one of those issues I tend to pick up in
patches which change our shell scripts, but we still have
a fair amount of existing code that isn't up to that standard.

-- PMM



[Qemu-devel] [PATCH v2] tests: Use command -v instead of which(1) in shell scripts

2014-11-18 Thread Fam Zheng
When which(1) is not installed, we would complain perl not found
because it's the first set_prog_path check. The error message is
wrong.

Fix it by using command -v, a native way to query the existence of a
command.

Suggested-by: Eric Blake ebl...@redhat.com
Signed-off-by: Fam Zheng f...@redhat.com

---
v2: Use command -v as suggested by Eric. Also change a few other
occasions of which(1) in tests/qemu-iotests/common.
---
 tests/qemu-iotests/common| 8 
 tests/qemu-iotests/common.config | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/tests/qemu-iotests/common b/tests/qemu-iotests/common
index 9e12bec..bc27f6a 100644
--- a/tests/qemu-iotests/common
+++ b/tests/qemu-iotests/common
@@ -289,10 +289,10 @@ testlist options
 
 if [ ! -z $DISPLAY ]
 then
-which xdiff /dev/null 21  diff=xdiff
-which gdiff /dev/null 21  diff=gdiff
-which tkdiff /dev/null 21  diff=tkdiff
-which xxdiff /dev/null 21  diff=xxdiff
+command -v xdiff /dev/null 21  diff=xdiff
+command -v gdiff /dev/null 21  diff=gdiff
+command -v tkdiff /dev/null 21  diff=tkdiff
+command -v xxdiff /dev/null 21  diff=xxdiff
 fi
 ;;
 
diff --git a/tests/qemu-iotests/common.config b/tests/qemu-iotests/common.config
index bd6790b..91a5ef6 100644
--- a/tests/qemu-iotests/common.config
+++ b/tests/qemu-iotests/common.config
@@ -47,7 +47,7 @@ export PWD=`pwd`
 # $1 = prog to look for, $2* = default pathnames if not found in $PATH
 set_prog_path()
 {
-p=`which $1 2 /dev/null`
+p=`command -v $1 2 /dev/null`
 if [ -n $p -a -x $p ]; then
 echo $p
 return 0
-- 
1.9.3