#!/usr/bin/perl system("grep 'define NETSNMP_DS_' ../../../include/net-snmp/agent/ds_agent.h > ds_agent.h"); system("h2xs -n NetSNMP::agent::default_store -O ds_agent.h"); open(ORIG,"default_store.xs"); open(NEW,"NetSNMP/agent/default_store/default_store.xs"); open(OUT,">default_store_new.xs"); # get up to the include from the original file while() { print OUT; last if (/include ) { last if (/include /); } # include the entire new file print OUT ; close(OUT); # # generate test # open(H,"ds_agent.h"); open(ORIG,"test.pl"); open(OUT,">test.pl.new"); while() { print OUT; last if (/\%tests =/); } while() { if (/define\s+(\w+)\s+(\d+)/) { printf OUT (" %-40s => %d,\n", "\"$1\"", $2); $tokenlist .= " $1\n"; } } while() { last if (/\);/); } print OUT; print OUT ; close(OUT); # # modify the perl module itself # open(ORIG,"default_store.pm"); open(OUT,">default_store_new.pm"); # first list while() { print OUT; last if (/\%EXPORT_TAGS =/); } print OUT $tokenlist; while() { last if (/\) \] \);/); } print OUT; # second list while() { print OUT; last if (/\@EXPORT =/); } print OUT $tokenlist; while() { last if (/\);/); } print OUT; # last section while() { print OUT; last if (/head2 Exportable constants/); } print OUT "\n"; print OUT $tokenlist; while() { last if (/^\s*$/); } print OUT; # tail end print OUT ; close(OUT); # # install new files # print "updated test.pl\n"; rename("test.pl","test.pl.bak"); rename("test.pl.new","test.pl"); print "updated default_store.pm\n"; rename("default_store.pm", "default_store.pm.bak"); rename("default_store_new.pm", "default_store.pm"); print "updated default_store.xs\n"; rename("default_store.xs", "default_store.xs.bak"); rename("default_store_new.xs", "default_store.xs"); # # remove the temp files. # system("rm -rf NetSNMP"); unlink("ds_agent.h");