secureserver.pl: update Windows detection and fix path conversion
authorMarc Hoersken <info@marc-hoersken.de>
Fri, 19 Dec 2014 16:17:26 +0000 (17:17 +0100)
committerMarc Hoersken <info@marc-hoersken.de>
Fri, 19 Dec 2014 16:17:26 +0000 (17:17 +0100)
tests/secureserver.pl

index 62ce0a51fe2f7944fcbc85264e5d5298250ae0a4..50369ff217bba9f33e5a16294236aa4a51314d03 100755 (executable)
@@ -53,6 +53,7 @@ my $ver_major;
 my $ver_minor;
 my $fips_support;
 my $stunnel_version;
+my $tstunnel_windows;
 my $socketopt;
 my $cmd;
 
@@ -222,6 +223,17 @@ if($stunnel_version < 310) {
     exit 1;
 }
 
+#***************************************************************************
+# Find out if we are running on Windows using the tstunnel binary
+#
+if($stunnel =~ /tstunnel(\.exe)?"?$/) {
+    $tstunnel_windows = 1;
+
+    # replace Cygwin and MinGW drives within paths
+    $capath =~ s/^(\/cygdrive)?\/(\w)\//$2\:\//;
+    $certfile =~ s/^(\/cygdrive)?\/(\w)\//$2\:\//;
+}
+
 #***************************************************************************
 # Build command to execute for stunnel 3.X versions
 #
@@ -267,7 +279,7 @@ if($stunnel_version >= 400) {
             print STUNCONF "
             fips = no";
         }
-        if($stunnel !~ /tstunnel(\.exe)?"?$/) {
+        if(!$tstunnel_windows) {
             print STUNCONF "
             output = $logfile
             pid = $pidfile
@@ -311,7 +323,7 @@ chmod(0600, $certfile) if(-f $certfile);
 #***************************************************************************
 # Run tstunnel on Windows.
 #
-if($stunnel =~ /tstunnel(\.exe)?"?$/) {
+if($tstunnel_windows) {
     # Fake pidfile for tstunnel on Windows.
     if(open(OUT, ">$pidfile")) {
         print OUT $$ . "\n";