Make c_rehash more platform neutral and make it work in mixed environment,
such as MSYS with "native" Win32 perl.
This commit is contained in:
parent
cbfb39d1be
commit
d8cdd1567f
@ -388,6 +388,7 @@ rehash: rehash.time
|
|||||||
rehash.time: certs apps
|
rehash.time: certs apps
|
||||||
@if [ -z "$(CROSS_COMPILE_PREFIX)" ]; then \
|
@if [ -z "$(CROSS_COMPILE_PREFIX)" ]; then \
|
||||||
(OPENSSL="`pwd`/util/opensslwrap.sh"; \
|
(OPENSSL="`pwd`/util/opensslwrap.sh"; \
|
||||||
|
[ -x "apps/openssl.exe" ] && OPENSSL="apps/openssl.exe"; \
|
||||||
OPENSSL_DEBUG_MEMORY=on; \
|
OPENSSL_DEBUG_MEMORY=on; \
|
||||||
export OPENSSL OPENSSL_DEBUG_MEMORY; \
|
export OPENSSL OPENSSL_DEBUG_MEMORY; \
|
||||||
$(PERL) tools/c_rehash certs) && \
|
$(PERL) tools/c_rehash certs) && \
|
||||||
|
@ -15,11 +15,14 @@ if(defined $ENV{OPENSSL}) {
|
|||||||
$ENV{OPENSSL} = $openssl;
|
$ENV{OPENSSL} = $openssl;
|
||||||
}
|
}
|
||||||
|
|
||||||
$ENV{PATH} .= ":$dir/bin";
|
my $pwd = `pwd`; chomp $pwd;
|
||||||
|
my $path_delim = ($pwd =~ /^[a-z]\:/i) ? ';' : ':'; # DOS/Win32 or Unix delimiter?
|
||||||
|
|
||||||
|
$ENV{PATH} .= "$path_delim$dir/bin";
|
||||||
|
|
||||||
if(! -x $openssl) {
|
if(! -x $openssl) {
|
||||||
my $found = 0;
|
my $found = 0;
|
||||||
foreach (split /:/, $ENV{PATH}) {
|
foreach (split /$path_delim/, $ENV{PATH}) {
|
||||||
if(-x "$_/$openssl") {
|
if(-x "$_/$openssl") {
|
||||||
$found = 1;
|
$found = 1;
|
||||||
last;
|
last;
|
||||||
@ -34,11 +37,16 @@ if(! -x $openssl) {
|
|||||||
if(@ARGV) {
|
if(@ARGV) {
|
||||||
@dirlist = @ARGV;
|
@dirlist = @ARGV;
|
||||||
} elsif($ENV{SSL_CERT_DIR}) {
|
} elsif($ENV{SSL_CERT_DIR}) {
|
||||||
@dirlist = split /:/, $ENV{SSL_CERT_DIR};
|
@dirlist = split /$path_delim/, $ENV{SSL_CERT_DIR};
|
||||||
} else {
|
} else {
|
||||||
$dirlist[0] = "$dir/certs";
|
$dirlist[0] = "$dir/certs";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (-d $dirlist[0]) {
|
||||||
|
chdir $dirlist[0];
|
||||||
|
$openssl="$pwd/$openssl" if (!-x $openssl);
|
||||||
|
chdir $pwd;
|
||||||
|
}
|
||||||
|
|
||||||
foreach (@dirlist) {
|
foreach (@dirlist) {
|
||||||
if(-d $_ and -w $_) {
|
if(-d $_ and -w $_) {
|
||||||
@ -101,7 +109,7 @@ sub check_file {
|
|||||||
sub link_hash_cert {
|
sub link_hash_cert {
|
||||||
my $fname = $_[0];
|
my $fname = $_[0];
|
||||||
$fname =~ s/'/'\\''/g;
|
$fname =~ s/'/'\\''/g;
|
||||||
my ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in '$fname'`;
|
my ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in "$fname"`;
|
||||||
chomp $hash;
|
chomp $hash;
|
||||||
chomp $fprint;
|
chomp $fprint;
|
||||||
$fprint =~ s/^.*=//;
|
$fprint =~ s/^.*=//;
|
||||||
@ -122,7 +130,11 @@ sub link_hash_cert {
|
|||||||
if ($symlink_exists) {
|
if ($symlink_exists) {
|
||||||
symlink $fname, $hash;
|
symlink $fname, $hash;
|
||||||
} else {
|
} else {
|
||||||
system ("cp", $fname, $hash);
|
open IN,"<$fname" or die "can't open $fname for read";
|
||||||
|
open OUT,">$hash" or die "can't open $hash for write";
|
||||||
|
print OUT <IN>; # does the job for small text files
|
||||||
|
close OUT;
|
||||||
|
close IN;
|
||||||
}
|
}
|
||||||
$hashlist{$hash} = $fprint;
|
$hashlist{$hash} = $fprint;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user