mirror of https://github.com/openssl/openssl.git
				
				
				
			params: update generation script to support multiple TRIE output
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/27392)
This commit is contained in:
		
							parent
							
								
									b747a48bb1
								
							
						
					
					
						commit
						7a10ecd405
					
				|  | @ -676,13 +676,19 @@ sub generate_internal_macros { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| sub generate_trie { | sub generate_trie { | ||||||
|  |     my @keys = @_; | ||||||
|     my %trie; |     my %trie; | ||||||
|     my $nodes = 0; |     my $nodes = 0; | ||||||
|     my $chars = 0; |     my $chars = 0; | ||||||
| 
 | 
 | ||||||
|     foreach my $name (sort keys %params) { |     foreach my $name (sort @keys) { | ||||||
|         my $val = $params{$name}; |         my $val = $params{$name}; | ||||||
|         if (substr($val, 0, 1) ne '*') { |         die("Unknown parameter name '$name'\n") if !defined $val; | ||||||
|  |         while (substr($val, 0, 1) eq '*') { | ||||||
|  |             $val = $params{substr($val, 1)}; | ||||||
|  |             die("Unknown referenced parameter from '$name'\n") | ||||||
|  |                 if !defined $val; | ||||||
|  |         } | ||||||
|         my $cursor = \%trie; |         my $cursor = \%trie; | ||||||
| 
 | 
 | ||||||
|         $chars += length($val); |         $chars += length($val); | ||||||
|  | @ -702,7 +708,6 @@ sub generate_trie { | ||||||
|         } |         } | ||||||
|         $cursor->{'val'} = $name; |         $cursor->{'val'} = $name; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
|     #print "\n\n/* $nodes nodes for $chars letters*/\n\n"; |     #print "\n\n/* $nodes nodes for $chars letters*/\n\n"; | ||||||
|     return %trie; |     return %trie; | ||||||
| } | } | ||||||
|  | @ -715,8 +720,6 @@ sub generate_code_from_trie { | ||||||
|     my $indent1 = $indent0 . $idt; |     my $indent1 = $indent0 . $idt; | ||||||
|     my $strcmp = $case_sensitive ? 'strcmp' : 'strcasecmp'; |     my $strcmp = $case_sensitive ? 'strcmp' : 'strcasecmp'; | ||||||
| 
 | 
 | ||||||
|     print "int ossl_param_find_pidx(const char *s)\n{\n" if $n == 0; |  | ||||||
| 
 |  | ||||||
|     if ($trieref->{'suffix'}) { |     if ($trieref->{'suffix'}) { | ||||||
|         my $suf = $trieref->{'suffix'}; |         my $suf = $trieref->{'suffix'}; | ||||||
| 
 | 
 | ||||||
|  | @ -750,7 +753,6 @@ sub generate_code_from_trie { | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     printf "%s}\n", $indent0; |     printf "%s}\n", $indent0; | ||||||
|     print "    return -1;\n}\n" if $n == 0; |  | ||||||
|     return ""; |     return ""; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -781,12 +783,16 @@ sub locate_long_endings { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| sub produce_decoder { | sub produce_decoder { | ||||||
|     my %t = generate_trie(); |     my $func_name = shift; | ||||||
|  |     my @keys = @_; | ||||||
|  |     my %t = generate_trie(@keys); | ||||||
|     my $s; |     my $s; | ||||||
| 
 | 
 | ||||||
|     locate_long_endings(\%t); |     locate_long_endings(\%t); | ||||||
| 
 | 
 | ||||||
|     open local *STDOUT, '>', \$s; |     open local *STDOUT, '>', \$s; | ||||||
|  |     printf "int %s(const char *s)\n{\n", $func_name; | ||||||
|     generate_code_from_trie(0, \%t); |     generate_code_from_trie(0, \%t); | ||||||
|  |     print "    return -1;\n}\n"; | ||||||
|     return $s; |     return $s; | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue