]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
ftp.pm: Made Perl testsuite able to handle Windows processes
authorMarc Hoersken <info@marc-hoersken.de>
Sat, 6 Apr 2013 09:56:04 +0000 (11:56 +0200)
committerMarc Hoersken <info@marc-hoersken.de>
Sat, 6 Apr 2013 09:56:04 +0000 (11:56 +0200)
tests/ftp.pm

index ae41849d89ba0f8ec1ff2c0136c3ba86d6ad34b7..b38745120adb988650df82df01f3853fa9254ac5 100644 (file)
@@ -63,6 +63,14 @@ sub processexists {
     my $pid = pidfromfile($pidfile);
 
     if($pid > 0) {
+        # verify if currently existing Windows process
+        if($^O eq "msys") {
+            my $filter = "-fi \"PID eq $pid\"";
+            my $result = `tasklist $filter 2>nul`;
+            if(index($result, "$pid") != -1) {
+                return $pid;
+            }
+        }
         # verify if currently alive
         if(kill(0, $pid)) {
             return $pid;
@@ -222,6 +230,13 @@ sub killsockfilters {
             printf("* kill pid for %s-%s => %d\n", $server,
                 ($proto eq 'ftp')?'ctrl':'filt', $pid) if($verbose);
             kill("KILL", $pid);
+            if($^O eq "msys") {
+                my $filter = "-fi \"PID eq $pid\"";
+                my $result = `tasklist $filter 2>nul`;
+                if(index($result, "$pid") != -1) {
+                    system("taskkill -f $filter >nul 2>&1");
+                }
+            }
             waitpid($pid, 0);
         }
         unlink($pidfile) if(-f $pidfile);
@@ -236,6 +251,13 @@ sub killsockfilters {
             printf("* kill pid for %s-data => %d\n", $server,
                 $pid) if($verbose);
             kill("KILL", $pid);
+            if($^O eq "msys") {
+                my $filter = "-fi \"PID eq $pid\"";
+                my $result = `tasklist $filter 2>nul`;
+                if(index($result, "$pid") != -1) {
+                    system("taskkill -f $filter >nul 2>&1");
+                }
+            }
             waitpid($pid, 0);
         }
         unlink($pidfile) if(-f $pidfile);