mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
Fix Perl coding error in msvc build system
Code like open(P, "cl /? 2>&1 |") || die "cl command not found"; does not actually catch any errors, because the exit status of the command before the pipe is ignored. The fix is to look at $?. This also gave the opportunity to clean up the logic of this code a bit.
This commit is contained in:
@ -92,30 +92,16 @@ sub CreateProject
|
||||
|
||||
sub DetermineVisualStudioVersion
|
||||
{
|
||||
my $nmakeVersion = shift;
|
||||
|
||||
if (!defined($nmakeVersion))
|
||||
{
|
||||
|
||||
# Determine version of nmake command, to set proper version of visual studio
|
||||
# we use nmake as it has existed for a long time and still exists in current visual studio versions
|
||||
open(P, "nmake /? 2>&1 |")
|
||||
|| croak
|
||||
"Unable to determine Visual Studio version: The nmake command wasn't found.";
|
||||
while (<P>)
|
||||
{
|
||||
chomp;
|
||||
if (/(\d+)\.(\d+)\.\d+(\.\d+)?$/)
|
||||
{
|
||||
return _GetVisualStudioVersion($1, $2);
|
||||
}
|
||||
}
|
||||
close(P);
|
||||
}
|
||||
elsif ($nmakeVersion =~ /(\d+)\.(\d+)\.\d+(\.\d+)?$/)
|
||||
# To determine version of Visual Studio we use nmake as it has
|
||||
# existed for a long time and still exists in current Visual
|
||||
# Studio versions.
|
||||
my $output = `nmake /? 2>&1`;
|
||||
$? >> 8 == 0 or croak "Unable to determine Visual Studio version: The nmake command wasn't found.";
|
||||
if ($output =~ /(\d+)\.(\d+)\.\d+(\.\d+)?$/m)
|
||||
{
|
||||
return _GetVisualStudioVersion($1, $2);
|
||||
}
|
||||
|
||||
croak
|
||||
"Unable to determine Visual Studio version: The nmake version could not be determined.";
|
||||
}
|
||||
|
Reference in New Issue
Block a user