tests: Use taskkill if tskill is not available, on Windows.
authorBen Pfaff <blp@nicira.com>
Thu, 25 Jun 2015 15:34:39 +0000 (08:34 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 25 Jun 2015 17:45:30 +0000 (10:45 -0700)
This is not the minimal change; it "improves" the rest of the code as well.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
tests/ovs-macros.at

index c583c3d..d550204 100644 (file)
@@ -37,37 +37,31 @@ if test "$IS_WIN32" = "yes"; then
         command diff --strip-trailing-cr "$@"
     }
 
+    # tskill is more effective than taskkill but it isn't always installed.
+    if (tskill //?) >/dev/null 2>&1; then :; else
+        tskill () { taskkill //F //PID $1 >/dev/null; }
+    fi
+
     kill () {
-        case "$1" in
-            -0)
-                shift
-                for i in $*; do
-                    # tasklist will always have return code 0.
-                    # If pid does exist, there will be a line with the pid.
-                    if tasklist //fi "PID eq $i" | grep $i >/dev/null; then
-                        :
-                    else
-                        return 1
-                    fi
-                done
-                return 0
-                ;;
-            -[1-9]*)
-                shift
-                for i in $*; do
-                    if tasklist //fi "PID eq $i" | grep $i >/dev/null; then
-                        tskill $i
-                    fi
-                done
-                ;;
+        signal=
+        retval=0
+        for arg; do
+            case $arg in
+            -*) signal=$arg ;;
             [1-9][0-9]*)
-                for i in $*; do
-                    if tasklist //fi "PID eq $i" | grep $i >/dev/null; then
-                        tskill $i
+                # tasklist always returns 0.
+                # If pid does exist, there will be a line with the pid.
+                if tasklist //fi "PID eq $arg" | grep $arg >/dev/null; then
+                    if test "X$signal" != "X-0"; then
+                        tskill $arg
                     fi
-                done
+                else
+                    retval=1
+                fi
                 ;;
-        esac
+            esac
+        done
+        return $retval
     }
 fi
 ]