Commit d8a52304 authored by Richard Levitte's avatar Richard Levitte
Browse files

When looking for executables, don't forget the extension



Because some operating systems have executable extensions, typically
".exe", we need to append it when looking for files in test() and
app() (or rather, their subroutines).

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
parent 580731af
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -680,10 +680,20 @@ sub __bldtop_dir {
    return catdir($directories{BLDTOP},@_);
}

sub __exeext {
    my $ext = "";
    if ($^O eq "VMS" ) {	# VMS
	$ext = ".exe";
    } elsif ($^O eq "MSWin32") { # Windows
	$ext = ".exe";
    }
    return $ENV{"EXE_EXT"} || $ext;
}

sub __test_file {
    BAIL_OUT("Must run setup() first") if (! $test_name);

    my $f = pop;
    my $f = pop . __exeext();
    $f = catfile($directories{BLDTEST},@_,$f);
    $f = catfile($directories{SRCTEST},@_,$f) unless -x $f;
    return $f;
@@ -701,7 +711,7 @@ sub __perltest_file {
sub __apps_file {
    BAIL_OUT("Must run setup() first") if (! $test_name);

    my $f = pop;
    my $f = pop . __exeext();
    $f = catfile($directories{BLDAPPS},@_,$f);
    $f = catfile($directories{SRCAPPS},@_,$f) unless -x $f;
    return $f;
@@ -790,23 +800,20 @@ sub __fixup_cmd {
    my $exe_shell = shift;

    my $prefix = __bldtop_file("util", "shlib_wrap.sh")." ";
    my $ext = $ENV{"EXE_EXT"} || "";

    if (defined($exe_shell)) {
	$prefix = "$exe_shell ";
    } elsif ($^O eq "VMS" ) {	# VMS
	$prefix = ($prog =~ /^(?:[\$a-z0-9_]+:)?[<\[]/i ? "mcr " : "mcr []");
	$ext = ".exe";
    } elsif ($^O eq "MSWin32") { # Windows
	$prefix = "";
	$ext = ".exe";
    }

    # We test both with and without extension.  The reason
    # is that we might be passed a complete file spec, with
    # extension.
    if ( ! -x $prog ) {
	my $prog = "$prog$ext";
	my $prog = "$prog";
	if ( ! -x $prog ) {
	    $prog = undef;
	}