1
0
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:
Peter Eisentraut
2015-02-18 20:24:30 -05:00
parent 9c7dd35019
commit d30292b8c4
2 changed files with 10 additions and 32 deletions

View File

@ -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.";
}