BerkeleyDB
view release on metacpan or search on metacpan
mkconsts.pl view on Meta::CPAN
DB_META_CHKSUM_FAIL => DEFINE,
#########
# 6.1.29
#########
DB2_AM_MPOOL_OPENED => DEFINE,
#########
# 6.1.36
#########
DB_REGION_MAGIC_RECOVER => DEFINE,
#########
# 6.2.23
#########
DB_DBT_EXT_FILE => IGNORE,
DB_LOG_EXT_FILE => DEFINE,
DB_OFF_T_MAX => DEFINE,
DB_REPMGR_CONF_FORWARD_WRITES => DEFINE,
DB_REP_WRITE_FORWARD_TIMEOUT => DEFINE,
DB_SLICED => DEFINE,
DB_SLICE_CORRUPT => DEFINE,
DB_VERB_SLICE => DEFINE,
#########
# 6.2.32
#########
DB_CONVERT => DEFINE,
#########
# 6.3.10
#########
DB_EVENT_REP_AUTOTAKEOVER => DEFINE,
DB_REPMGR_CONF_DISABLE_POLL => DEFINE,
DB_REPMGR_CONF_ENABLE_EPOLL => DEFINE,
DB_REPMGR_ISELECTABLE => DEFINE,
DB_REP_INELECT => DEFINE,
DB_SYSTEM_MEM_MISSING => DEFINE,
DB_TXN_DISPATCH => DEFINE,
HAVE_EPOLL => DEFINE,
TXN_DISPATCH => IGNORE,
# enum poll_method_t
SELECT => '6.3.10',
POLL => '6.3.10',
EPOLL => '6.3.10',
# enum DB_MEM_CONFIG
DB_MEM_DATABASE => '6.3.10',
DB_MEM_DATABASE_LENGTH => '6.3.10',
DB_MEM_EXTFILE_DATABASE => '6.3.10',
DB_MEM_REP_SITE => '6.3.10',
) ;
sub enum_Macro
{
my $str = shift ;
my ($major, $minor, $patch) = split /\./, $str ;
my $macro =
"#if (DB_VERSION_MAJOR > $major) || \\\n" .
" (DB_VERSION_MAJOR == $major && DB_VERSION_MINOR > $minor) || \\\n" .
" (DB_VERSION_MAJOR == $major && DB_VERSION_MINOR == $minor && \\\n" .
" DB_VERSION_PATCH >= $patch)\n" ;
return $macro;
}
sub OutputXS
{
my @names = () ;
foreach my $key (sort keys %constants)
{
my $val = $constants{$key} ;
next if $val eq IGNORE;
if ($val eq STRING)
{ push @names, { name => $key, type => "PV" } }
elsif ($val eq DEFINE)
{ push @names, $key }
else
{ push @names, { name => $key, macro => [enum_Macro($val), "#endif\n"] } }
}
warn "Updating constants.xs & constants.h...\n";
WriteConstants(
NAME => BerkeleyDB,
NAMES => \@names,
C_FILE => 'constants.h',
XS_FILE => 'constants.xs',
) ;
}
sub OutputPM
{
my $filename = 'BerkeleyDB.pm';
warn "Updating $filename...\n";
open IN, "<$filename" || die "Cannot open $filename: $!\n";
open OUT, ">$filename.tmp" || die "Cannot open $filename.tmp: $!\n";
my $START = '@EXPORT = qw(' ;
my $START_re = quotemeta $START ;
my $END = ');';
my $END_re = quotemeta $END ;
# skip to the @EXPORT declaration
OUTER: while (<IN>)
{
if ( /^\s*$START_re/ )
{
# skip to the end marker.
while (<IN>)
{ last OUTER if /^\s*$END_re/ }
}
print OUT ;
}
print OUT "$START\n";
foreach my $key (sort keys %constants)
{
next if $constants{$key} eq IGNORE;
print OUT "\t$key\n";
}
print OUT "\t$END\n";
while (<IN>)
{
print OUT ;
}
close IN;
close OUT;
rename $filename, "$filename.bak" || die "Cannot rename $filename: $!\n" ;
rename "$filename.tmp", $filename || die "Cannot rename $filename.tmp: $!\n" ;
}
OutputXS() ;
OutputPM() ;
( run in 0.873 second using v1.01-cache-2.11-cpan-39bf76dae61 )