]> granicus.if.org Git - postgresql/commitdiff
Handle spaces in OpenSSL install location for MSVC
authorAndrew Dunstan <andrew@dunslane.net>
Fri, 4 Oct 2019 19:34:40 +0000 (15:34 -0400)
committerAndrew Dunstan <andrew@dunslane.net>
Fri, 4 Oct 2019 19:34:40 +0000 (15:34 -0400)
First, make sure that the .exe name is quoted when trying to get the
version number. Also, don't quote the lib name for using in the project
files if it's already been quoted. This second change applies to all
libraries, not just OpenSSL.

This has clearly been broken forever, so backpatch to all live branches.

src/tools/msvc/Project.pm
src/tools/msvc/Solution.pm

index b5d1dc6e89aaab610c407690e4c6e0f8e62f062c..16a7340b22d23ccee5916ba1f74fd393224493e5 100644 (file)
@@ -132,7 +132,8 @@ sub AddLibrary
 {
        my ($self, $lib, $dbgsuffix) = @_;
 
-       if ($lib =~ m/\s/)
+       # quote lib name if it has spaces and isn't already quoted
+       if ($lib =~ m/\s/ && $lib !~ m/^[&]quot;/)
        {
                $lib = '&quot;' . $lib . "&quot;";
        }
index 318594db5dacdf8a785cdb5ad705944f70f8569b..17e5903c28b51ae724148125f6c34b64df36fddf 100644 (file)
@@ -125,8 +125,9 @@ sub GetOpenSSLVersion
 
        # Attempt to get OpenSSL version and location.  This assumes that
        # openssl.exe is in the specified directory.
+       # Quote the .exe name in case it has spaces
        my $opensslcmd =
-         $self->{options}->{openssl} . "\\bin\\openssl.exe version 2>&1";
+         qq("$self->{options}->{openssl}\\bin\\openssl.exe" version 2>&1);
        my $sslout = `$opensslcmd`;
 
        $? >> 8 == 0