gen
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:2k
- #!/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(<ORIG>) {
- print OUT;
- last if (/include <net-snmp/agent/ds_agent.h/);
- }
- # skip up to the include from the original file
- while(<NEW>) {
- last if (/include <ds_agent.h>/);
- }
- # include the entire new file
- print OUT <NEW>;
- close(OUT);
- #
- # generate test
- #
- open(H,"ds_agent.h");
- open(ORIG,"test.pl");
- open(OUT,">test.pl.new");
- while(<ORIG>) {
- print OUT;
- last if (/%tests =/);
- }
- while(<H>) {
- if (/defines+(w+)s+(d+)/) {
- printf OUT (" %-40s => %d,n", ""$1"", $2);
- $tokenlist .= " $1n";
- }
- }
- while(<ORIG>) {
- last if (/);/);
- }
- print OUT;
- print OUT <ORIG>;
- close(OUT);
- #
- # modify the perl module itself
- #
- 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 (/) ] );/);
- }
- 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 (/^s*$/);
- }
- print OUT;
- # tail end
- print OUT <ORIG>;
- close(OUT);
- #
- # install new files
- #
- print "updated test.pln";
- rename("test.pl","test.pl.bak");
- rename("test.pl.new","test.pl");
- print "updated default_store.pmn";
- rename("default_store.pm", "default_store.pm.bak");
- rename("default_store_new.pm", "default_store.pm");
- print "updated default_store.xsn";
- 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");