]> 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:12 +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 9817b9439a94e603ff5374e913ea1b6304c805d6..1c9a8cda5c4deecbd6ae96566484809e511ddd0f 100644 (file)
@@ -126,7 +126,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 cb0edd387b6bb76b66a111c31b56848afda748df..06b479eced00b95503bae4a2676485b529854c29 100644 (file)
@@ -124,8 +124,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