155714Skris#!/usr/local/bin/perl
255714Skris
355714Skris$infile="/home/eay/ssl/SSLeay/MINFO";
455714Skris
555714Skrisopen(IN,"<$infile") || die "unable to open $infile:$!\n";
655714Skris$_=<IN>;
755714Skrisfor (;;)
855714Skris	{
955714Skris	chop;
1055714Skris
1155714Skris	($key,$val)=/^([^=]+)=(.*)/;
1255714Skris	if ($key eq "RELATIVE_DIRECTORY")
1355714Skris		{
1455714Skris		if ($lib ne "")
1555714Skris			{
1655714Skris			$uc=$lib;
1755714Skris			$uc =~ s/^lib(.*)\.a/$1/;
1855714Skris			$uc =~ tr/a-z/A-Z/;
1955714Skris			$lib_nam{$uc}=$uc;
2055714Skris			$lib_obj{$uc}.=$libobj." ";
2155714Skris			}
2255714Skris		last if ($val eq "FINISHED");
2355714Skris		$lib="";
2455714Skris		$libobj="";
2555714Skris		$dir=$val;
2655714Skris		}
2755714Skris
2855714Skris	if ($key eq "TEST")
2955714Skris		{ $test.=&var_add($dir,$val); }
3055714Skris
3155714Skris	if (($key eq "PROGS") || ($key eq "E_OBJ"))
3255714Skris		{ $e_exe.=&var_add($dir,$val); }
3355714Skris
3455714Skris	if ($key eq "LIB")
3555714Skris		{
3655714Skris		$lib=$val;
3755714Skris		$lib =~ s/^.*\/([^\/]+)$/$1/;
3855714Skris		}
3955714Skris
4055714Skris	if ($key eq "EXHEADER")
4155714Skris		{ $exheader.=&var_add($dir,$val); }
4255714Skris
4355714Skris	if ($key eq "HEADER")
4455714Skris		{ $header.=&var_add($dir,$val); }
4555714Skris
4655714Skris	if ($key eq "LIBSRC")
4755714Skris		{ $libsrc.=&var_add($dir,$val); }
4855714Skris
4955714Skris	if (!($_=<IN>))
5055714Skris		{ $_="RELATIVE_DIRECTORY=FINISHED\n"; }
5155714Skris	}
5255714Skrisclose(IN);
5355714Skris
5455714Skris@a=split(/\s+/,$libsrc);
5555714Skrisforeach (@a)
5655714Skris	{
5755714Skris	print "${_}.c\n";
5855714Skris	}
5955714Skris
6055714Skrissub var_add
6155714Skris	{
6255714Skris	local($dir,$val)=@_;
6355714Skris	local(@a,$_,$ret);
6455714Skris
65111147Snectar	return("") if $no_engine && $dir =~ /\/engine/;
6655714Skris	return("") if $no_idea && $dir =~ /\/idea/;
6755714Skris	return("") if $no_rc2  && $dir =~ /\/rc2/;
6855714Skris	return("") if $no_rc4  && $dir =~ /\/rc4/;
6955714Skris	return("") if $no_rsa  && $dir =~ /\/rsa/;
7055714Skris	return("") if $no_rsa  && $dir =~ /^rsaref/;
7155714Skris	return("") if $no_dsa  && $dir =~ /\/dsa/;
7255714Skris	return("") if $no_dh   && $dir =~ /\/dh/;
7355714Skris	if ($no_des && $dir =~ /\/des/)
7455714Skris		{
7555714Skris		if ($val =~ /read_pwd/)
7655714Skris			{ return("$dir/read_pwd "); }
7755714Skris		else
7855714Skris			{ return(""); }
7955714Skris		}
8055714Skris	return("") if $no_mdc2 && $dir =~ /\/mdc2/;
8155714Skris	return("") if $no_sock && $dir =~ /\/proxy/;
8255714Skris	return("") if $no_bf   && $dir =~ /\/bf/;
8355714Skris	return("") if $no_cast && $dir =~ /\/cast/;
8455714Skris
8555714Skris	$val =~ s/^\s*(.*)\s*$/$1/;
8655714Skris	@a=split(/\s+/,$val);
8755714Skris	grep(s/\.[och]$//,@a);
8855714Skris
8955714Skris	@a=grep(!/^e_.*_3d$/,@a) if $no_des;
9055714Skris	@a=grep(!/^e_.*_d$/,@a) if $no_des;
9155714Skris	@a=grep(!/^e_.*_i$/,@a) if $no_idea;
9255714Skris	@a=grep(!/^e_.*_r2$/,@a) if $no_rc2;
9355714Skris	@a=grep(!/^e_.*_bf$/,@a) if $no_bf;
9455714Skris	@a=grep(!/^e_.*_c$/,@a) if $no_cast;
9555714Skris	@a=grep(!/^e_rc4$/,@a) if $no_rc4;
9655714Skris
9755714Skris	@a=grep(!/(^s2_)|(^s23_)/,@a) if $no_ssl2;
9855714Skris	@a=grep(!/(^s3_)|(^s23_)/,@a) if $no_ssl3;
9955714Skris
10055714Skris	@a=grep(!/(_sock$)|(_acpt$)|(_conn$)|(^pxy_)/,@a) if $no_sock;
10155714Skris
10255714Skris	@a=grep(!/(^md2)|(_md2$)/,@a) if $no_md2;
10355714Skris	@a=grep(!/(^md5)|(_md5$)/,@a) if $no_md5;
10455714Skris
10555714Skris	@a=grep(!/(^d2i_r_)|(^i2d_r_)/,@a) if $no_rsa;
10655714Skris	@a=grep(!/(^p_open$)|(^p_seal$)/,@a) if $no_rsa;
10755714Skris	@a=grep(!/(^pem_seal$)/,@a) if $no_rsa;
10855714Skris
10955714Skris	@a=grep(!/(m_dss$)|(m_dss1$)/,@a) if $no_dsa;
11055714Skris	@a=grep(!/(^d2i_s_)|(^i2d_s_)|(_dsap$)/,@a) if $no_dsa;
11155714Skris
11255714Skris	@a=grep(!/^n_pkey$/,@a) if $no_rsa || $no_rc4;
11355714Skris
11455714Skris	@a=grep(!/_dhp$/,@a) if $no_dh;
11555714Skris
11655714Skris	@a=grep(!/(^sha[^1])|(_sha$)|(m_dss$)/,@a) if $no_sha;
11755714Skris	@a=grep(!/(^sha1)|(_sha1$)|(m_dss1$)/,@a) if $no_sha1;
11855714Skris	@a=grep(!/_mdc2$/,@a) if $no_mdc2;
11955714Skris
120111147Snectar	@a=grep(!/^engine$/,@a) if $no_engine;
12155714Skris	@a=grep(!/(^rsa$)|(^genrsa$)|(^req$)|(^ca$)/,@a) if $no_rsa;
12255714Skris	@a=grep(!/(^dsa$)|(^gendsa$)|(^dsaparam$)/,@a) if $no_dsa;
12355714Skris	@a=grep(!/^gendsa$/,@a) if $no_sha1;
12455714Skris	@a=grep(!/(^dh$)|(^gendh$)/,@a) if $no_dh;
12555714Skris
12655714Skris	@a=grep(!/(^dh)|(_sha1$)|(m_dss1$)/,@a) if $no_sha1;
12755714Skris
12855714Skris	grep($_="$dir/$_",@a);
12955714Skris	@a=grep(!/(^|\/)s_/,@a) if $no_sock;
13055714Skris	@a=grep(!/(^|\/)bio_sock/,@a) if $no_sock;
13155714Skris	$ret=join(' ',@a)." ";
13255714Skris	return($ret);
13355714Skris	}
13455714Skris
135