diff options
Diffstat (limited to 'configdata.pm.in')
-rw-r--r-- | configdata.pm.in | 83 |
1 files changed, 13 insertions, 70 deletions
diff --git a/configdata.pm.in b/configdata.pm.in index 3481eab..666d1f3 100644 --- a/configdata.pm.in +++ b/configdata.pm.in @@ -1,65 +1,6 @@ #! {- $config{HASHBANGPERL} -} # -*- mode: perl -*- {- - sub out_item { - my $ref = shift; - # Available options: - # indent => callers indentation (int) - # delimiters => 1 if outer delimiters should be added - my %opts = @_; - - my $indent = $opts{indent} // 0; - # Indentation of the whole structure, where applicable - my $nlindent1 = "\n" . ' ' x $indent; - # Indentation of individual items, where applicable - my $nlindent2 = "\n" . ' ' x ($indent + 4); - - my $product; # Finished product, or reference to a function that - # produces a string, given $_ - # The following are only used when $product is a function reference - my $delim_l; # Left delimiter of structure - my $delim_r; # Right delimiter of structure - my $separator; # Item separator - my @items; # Items to iterate over - - if (ref($ref) eq "ARRAY") { - if (scalar @$ref == 0) { - $product = $opts{delimiters} ? '[]' : ''; - } else { - $product = sub { - out_item(\$_, delimiters => 1, indent => $indent + 4) - }; - $delim_l = ($opts{delimiters} ? '[' : '').$nlindent2; - $delim_r = $nlindent1.($opts{delimiters} ? ']' : ''); - $separator = ",$nlindent2"; - @items = @$ref; - } - } elsif (ref($ref) eq "HASH") { - if (scalar keys %$ref == 0) { - $product = $opts{delimiters} ? '{}' : ''; - } else { - $product = sub { - quotify1($_) . " => " - . out_item($ref->{$_}, delimiters => 1, indent => $indent + 4) - }; - $delim_l = ($opts{delimiters} ? '{' : '').$nlindent2; - $delim_r = $nlindent1.($opts{delimiters} ? '}' : ''); - $separator = ",$nlindent2"; - @items = sort keys %$ref; - } - } elsif (ref($ref) eq "SCALAR") { - $product = defined $$ref ? quotify1 $$ref : "undef"; - } else { - $product = defined $ref ? quotify1 $ref : "undef"; - } - - if (ref($product) eq "CODE") { - $delim_l . join($separator, map { &$product } @items) . $delim_r; - } else { - $product; - } - } - # We must make sourcedir() return an absolute path, because configdata.pm # may be loaded as a module from any script in any directory, making # relative paths untrustable. Because the result is used with 'use lib', @@ -73,6 +14,8 @@ sub sourcefile { return abs_path(catfile($config{sourcedir}, @_)); } + use lib sourcedir('util', 'perl'); + use OpenSSL::Util; -} package configdata; @@ -86,23 +29,23 @@ our @EXPORT = qw( @disablables @disablables_int ); -our %config = ({- out_item(\%config); -}); -our %target = ({- out_item(\%target); -}); -our @disablables = ({- out_item(\@disablables) -}); -our @disablables_int = ({- out_item(\@disablables_int) -}); -our %disabled = ({- out_item(\%disabled); -}); -our %withargs = ({- out_item(\%withargs); -}); -our %unified_info = ({- out_item(\%unified_info); -}); +our %config = ({- dump_data(\%config, indent => 0); -}); +our %target = ({- dump_data(\%target, indent => 0); -}); +our @disablables = ({- dump_data(\@disablables, indent => 0) -}); +our @disablables_int = ({- dump_data(\@disablables_int, indent => 0) -}); +our %disabled = ({- dump_data(\%disabled, indent => 0); -}); +our %withargs = ({- dump_data(\%withargs, indent => 0); -}); +our %unified_info = ({- dump_data(\%unified_info, indent => 0); -}); # Unexported, only used by OpenSSL::Test::Utils::available_protocols() our %available_protocols = ( - tls => [{- out_item(\@tls) -}], - dtls => [{- out_item(\@dtls) -}], + tls => [{- dump_data(\@tls, indent => 0) -}], + dtls => [{- dump_data(\@dtls, indent => 0) -}], ); # The following data is only used when this files is use as a script -my @makevars = ({- out_item(\@makevars); -}); -my %disabled_info = ({- out_item(\%disabled_info); -}); +my @makevars = ({- dump_data(\@makevars, indent => 0); -}); +my %disabled_info = ({- dump_data(\%disabled_info, indent => 0); -}); my @user_crossable = qw( {- join (' ', @user_crossable) -} ); # If run directly, we can give some answers, and even reconfigure |