#!/usr/bin/perl

use CGI;
use Mysql;

use Env qw(LSBUSER LSBDBPASSWD LSBDB LSBDBHOST);

$Dbh = Mysql->connect($LSBDBHOST,$LSBDB,$LSBUSER, $LSBDBPASSWD) || die $Mysql::db_errstr;

$select = "SELECT DISTINCT Iname,Istatus,Vname,Asymbol,Aname,Mname FROM Interface ";
$select.= "LEFT JOIN LGInt ON Iid=LGIint ";
$select.= "LEFT JOIN LibGroup ON LGid=LGIlibg ";
$select.= "LEFT JOIN Library ON Lid=LGlib ";
$select.= "LEFT JOIN ModLib ON MLlid=Lid ";
$select.= "LEFT JOIN Module ON Mid=MLmid ";
$select.= "LEFT OUTER JOIN ArchInt ON Iid=AIint ";
$select.= "LEFT OUTER JOIN Architecture ON Aid=AIarch ";
$select.= "LEFT OUTER JOIN Version ON Vid=AIversion ";
$select.= "WHERE Interface.Iid=LGInt.LGIint ";
$select.= "AND Library.Lstd='Yes' ";
$select.= "ORDER BY Iname,Aid ";

#print $select;

$sth = $Dbh->query($select) || die $Dbh->errmsg();

print "/* Generated file - Do Not Edit */\n";
print "#include \"elfchk.h\"\n";
print "struct versym DynSyms[] = {\n";
for(1..$sth->numrows) {
	%entry=$sth->fetchhash;
        if ($entry{'Aname'} && $entry{'Aname'} ne "All")
        {
          print "#if $entry{'Asymbol'}\n";
        }
	printf "\t{\"%s\",\"%s\",",$entry{'Iname'},$entry{'Vname'};
	if( $entry{'Istatus'} eq 'Deprecated' ) {
		printf "1";
	} else {
		printf "0";
	}
	printf ",\"%s\"",$entry{'Mname'};
	printf "},\n";
        if ($entry{'Aname'} && $entry{'Aname'} ne "All")
        {
          print "#endif\n";
        }

}
print "\t};\n";
print "int numDynSyms = sizeof(DynSyms)/sizeof(struct versym);\n";

