]> 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:39:27 +0000 (15:39 -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 0d3554659b01687199b337f2585025d4c02e0a39..04fa74b7a93c0ca669d0d31911c038facef51b90 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 51711c2bff98aedc070276db4df09c53a7f0abf3..9d2345689af24f31fd59ac371f5a372d4ae79664 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