-sub parse_params {
- my ( $cgi, $params_def, $opts ) = @_;
-
- my %params_ret = ( values => {}, errors => {} );
- my %params;
- if ($USE_PAGED_MODE) {
- debug( "Use PAGED_MODE", 2 );
- %params = %$params_def;
- foreach (keys %page_params) {
- delete $params{$_};
- }
- %params = ( %params, %page_params );
- } else {
- %params = %$params_def;
- }
-
- foreach my $param ( keys %params ) {
-
- debug( "Param <strong>$param</strong>", 2 );
-
- my $p_value_orig = $cgi->param($param);
-
- if (!defined($p_value_orig)
- && defined $params_def->{$param}{alias}
- && defined $cgi->param($params_def->{$param}{alias})) {
- $p_value_orig = $cgi->param($params_def->{$param}{alias});
- debug( "Used alias <strong>$params_def->{$param}{alias}</strong>",
- 2 );
- }
-
- my @p_value = ($p_value_orig);
-
- debug( "Value (Orig) ".($p_value_orig||""), 2 );
-
- if ($params_def->{$param}{array} && defined $p_value_orig) {
- @p_value = split /$params_def->{$param}{array}/, $p_value_orig;
- debug( "Value (Array Split) ". join('##',@p_value), 2 );
- }
-
- if ($params_def->{$param}{match} && defined $p_value_orig) {
- @p_value = map
- { $_ =~ m/$params_def->{$param}{match}/; $_ = $1 }
- @p_value;
- }
- @p_value = grep { defined $_ } @p_value;
-
- debug( "Value (Match) ". join('##',@p_value), 2 );
-
- unless (@p_value) {
- if (defined $params{$param}{default}) {
- @p_value = ($params{$param}{default});
- } else {
- @p_value = undef;
- $params_ret{errors}{$param} = "undef";
- next;
- }
- }
-
- debug( "Value (Default) ". join('##',@p_value), 2 );
- my @p_value_no_replace = @p_value;
-
- if ($params{$param}{replace} && @p_value) {
- @p_value = ();
- foreach my $pattern (keys %{$params{$param}{replace}}) {
- foreach (@p_value_no_replace) {
- if ($_ eq $pattern) {
- my $replacement = $params{$param}{replace}{$_};
- if (ref $replacement) {
- push @p_value, @$replacement;
- } else {
- push @p_value, $replacement;
- }
- } else {
- push @p_value, $_;
- }
- }
- }
- }
-
- debug( "Value (Final) ". join('##',@p_value), 2 );
-
- if ($params_def->{$param}{array}) {
- $params_ret{values}{$param} = {
- orig => $p_value_orig,
- no_replace => \@p_value_no_replace,
- final => \@p_value,
- };
- @{$params_def->{$param}{var}} = @p_value
- if $params_def->{$param}{var};
+sub read_entry_all {
+ my ($hash, $key, $results, $non_results, $opts) = @_;
+ my ($virt, $result) = split /\000/o, $hash->{$key} || "-\01-", 2;
+
+ my %virt = split /\01/o, $virt;
+ while (my ($suite, $provides) = each %virt) {
+ next if $suite eq '-';
+ if ($opts->{h_suites}{$suite}) {
+ push @$results, [ $key, "-", $suite, 'virtual', 'v', 'v', 'v', 'v',
+ $provides];