You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-11-05 04:50:35 +03:00
128 lines
2.3 KiB
Perl
Executable File
128 lines
2.3 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
system("grep 'define NETSNMP_DS_' ../../include/net-snmp/library/default_store.h > default_store.h");
|
|
#gcc -E ../../include/net-snmp/library/default_store.h | grep -v default_store.h >> default_store.h
|
|
system("h2xs -n NetSNMP::default_store -O default_store.h");
|
|
|
|
open(ORIG,"default_store.xs");
|
|
open(NEW,"NetSNMP/default_store/default_store.xs");
|
|
open(OUT,">default_store_new.xs");
|
|
|
|
# get up to the include from the original file
|
|
while(<ORIG>) {
|
|
print OUT;
|
|
last if (/include <net-snmp\/library\/default_store.h/);
|
|
}
|
|
|
|
# skip up to the include from the original file
|
|
while(<NEW>) {
|
|
last if (/include <default_store.h>/);
|
|
}
|
|
|
|
# include the entire new file
|
|
print OUT <NEW>;
|
|
|
|
# skip past the constant portion of the old file
|
|
while (<ORIG>) {
|
|
last if (/netsnmp_ds_get_bool/);
|
|
$last = $_;
|
|
}
|
|
|
|
# We need the last two lines
|
|
print OUT $last;
|
|
print OUT $_;
|
|
|
|
# and the rest
|
|
print OUT <ORIG>;
|
|
|
|
close(OUT);
|
|
|
|
#
|
|
# generate test
|
|
#
|
|
open(H,"default_store.h");
|
|
open(ORIG,"test.pl");
|
|
open(OUT,">test.pl.new");
|
|
|
|
while(<ORIG>) {
|
|
print OUT;
|
|
last if (/\%tests =/);
|
|
}
|
|
|
|
while(<H>) {
|
|
if (/define\s+(\w+)\s+(\d+)/) {
|
|
printf OUT (" %-40s => %d,\n", "\"$1\"", $2);
|
|
$tokenlist .= " $1\n";
|
|
}
|
|
}
|
|
|
|
while(<ORIG>) {
|
|
last if (/\);/);
|
|
}
|
|
print OUT;
|
|
print OUT <ORIG>;
|
|
close(OUT);
|
|
|
|
#
|
|
# modify the perl module itself
|
|
#
|
|
open(H,"default_store.h");
|
|
open(ORIG,"default_store.pm");
|
|
open(OUT,">default_store_new.pm");
|
|
|
|
# first list
|
|
while(<ORIG>) {
|
|
print OUT;
|
|
last if (/\%EXPORT_TAGS =/);
|
|
}
|
|
print OUT $tokenlist;
|
|
while(<ORIG>) {
|
|
last if (/netsnmp_ds_get_boolean/);
|
|
}
|
|
print OUT;
|
|
|
|
# second list
|
|
while(<ORIG>) {
|
|
print OUT;
|
|
last if (/\@EXPORT =/);
|
|
}
|
|
print OUT $tokenlist;
|
|
while(<ORIG>) {
|
|
last if (/\);/);
|
|
}
|
|
print OUT;
|
|
|
|
# last section
|
|
while(<ORIG>) {
|
|
print OUT;
|
|
last if (/head2 Exportable constants/);
|
|
}
|
|
print OUT "\n";
|
|
print OUT $tokenlist;
|
|
while(<ORIG>) {
|
|
last if (/head2 Exportable functions/);
|
|
}
|
|
print OUT "\n";
|
|
print OUT;
|
|
|
|
# tail end
|
|
print OUT <ORIG>;
|
|
close(OUT);
|
|
|
|
#
|
|
# install new files
|
|
#
|
|
print "updated test.pl\n";
|
|
rename("test.pl.new","test.pl");
|
|
rename("default_store_new.pm", "default_store.pm");
|
|
print "updated default_store.pm\n";
|
|
rename("default_store_new.xs", "default_store.xs");
|
|
print "updated default_store.xs\n";
|
|
|
|
#
|
|
# remove the temp files.
|
|
#
|
|
system("rm -rf NetSNMP");
|
|
unlink("default_store.h");
|
|
|