Add the possibility to have an extra local OpenSSL configs directory
authorRichard Levitte <levitte@openssl.org>
Mon, 2 May 2016 14:50:51 +0000 (16:50 +0200)
committerRichard Levitte <levitte@openssl.org>
Mon, 2 May 2016 18:19:41 +0000 (20:19 +0200)
The environment variable OPENSSL_LOCAL_CONFIG_DIR is used to indicate
that there's a local directory with extra configuration files.

Reviewed-by: Stephen Henson <steve@openssl.org>
Configure

index 90103bbed04cf280b3d5290c44418fb05edfe409..3d36783941dc0139e7b7600406569f1e7e2467be 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -178,6 +178,8 @@ my $srcdir = catdir(absolutedir(dirname($0))); # catdir ensures local syntax
 my $blddir = catdir(absolutedir("."));         # catdir ensures local syntax
 my $dofile = abs2rel(catfile($srcdir, "util/dofile.pl"));
 
+my $local_config_envname = 'OPENSSL_LOCAL_CONFIG_DIR';
+
 $config{sourcedir} = abs2rel($srcdir);
 $config{builddir} = abs2rel($blddir);
 
@@ -212,6 +214,20 @@ foreach (sort glob($pattern) ) {
     &read_config($_);
 }
 
+if (defined $ENV{$local_config_envname}) {
+    if ($^O eq 'VMS') {
+        # VMS environment variables are logical names,
+        # which can be used as is
+        $pattern = $local_config_envname . ':' . '*.conf';
+    } else {
+        $pattern = catfile($ENV{$local_config_envname}, '*.conf');
+    }
+
+    foreach (sort glob($pattern) ) {
+        &read_config($_);
+    }
+}
+
 
 print "Configuring OpenSSL version $config{version} (0x$config{version_num})\n";