gen
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:2k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #!/usr/bin/perl
  2. system("grep 'define NETSNMP_DS_' ../../../include/net-snmp/agent/ds_agent.h > ds_agent.h");
  3. system("h2xs -n NetSNMP::agent::default_store -O ds_agent.h");
  4. open(ORIG,"default_store.xs");
  5. open(NEW,"NetSNMP/agent/default_store/default_store.xs");
  6. open(OUT,">default_store_new.xs");
  7. # get up to the include from the original file
  8. while(<ORIG>) {
  9.     print OUT;
  10.     last if (/include <net-snmp/agent/ds_agent.h/);
  11. }
  12. # skip up to the include from the original file
  13. while(<NEW>) {
  14.     last if (/include <ds_agent.h>/);
  15. }
  16. # include the entire new file
  17. print OUT <NEW>;
  18. close(OUT);
  19. #
  20. # generate test
  21. #
  22. open(H,"ds_agent.h");
  23. open(ORIG,"test.pl");
  24. open(OUT,">test.pl.new");
  25. while(<ORIG>) {
  26.     print OUT;
  27.     last if (/%tests =/);
  28. }
  29. while(<H>) {
  30.     if (/defines+(w+)s+(d+)/) {
  31. printf OUT ("                  %-40s => %d,n", ""$1"", $2);
  32. $tokenlist .= "    $1n";
  33.     }
  34. }
  35. while(<ORIG>) {
  36.     last if (/);/);
  37. }
  38. print OUT;
  39. print OUT <ORIG>;
  40. close(OUT);
  41. #
  42. # modify the perl module itself
  43. #
  44. open(ORIG,"default_store.pm");
  45. open(OUT,">default_store_new.pm");
  46. # first list
  47. while(<ORIG>) {
  48.     print OUT;
  49.     last if (/%EXPORT_TAGS =/);
  50. }
  51. print OUT $tokenlist;
  52. while(<ORIG>) {
  53.     last if (/) ] );/);
  54. }
  55. print OUT;
  56. # second list
  57. while(<ORIG>) {
  58.     print OUT;
  59.     last if (/@EXPORT =/);
  60. }
  61. print OUT $tokenlist;
  62. while(<ORIG>) {
  63.     last if (/);/);
  64. }
  65. print OUT;
  66. # last section
  67. while(<ORIG>) {
  68.     print OUT;
  69.     last if (/head2 Exportable constants/);
  70. }
  71. print OUT "n";
  72. print OUT $tokenlist;
  73. while(<ORIG>) {
  74.     last if (/^s*$/);
  75. }
  76. print OUT;
  77. # tail end
  78. print OUT <ORIG>;
  79. close(OUT);
  80. #
  81. # install new files
  82. #
  83. print "updated test.pln";
  84. rename("test.pl","test.pl.bak");
  85. rename("test.pl.new","test.pl");
  86. print "updated default_store.pmn";
  87. rename("default_store.pm", "default_store.pm.bak");
  88. rename("default_store_new.pm", "default_store.pm");
  89. print "updated default_store.xsn";
  90. rename("default_store.xs", "default_store.xs.bak");
  91. rename("default_store_new.xs", "default_store.xs");
  92. #
  93. # remove the temp files.
  94. #
  95. system("rm -rf NetSNMP");
  96. unlink("ds_agent.h");