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

SNMP编程

开发平台:

Unix_Linux

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