📄 gen
字号:
#!/usr/bin/perlsystem("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.hsystem("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 filewhile(<ORIG>) { print OUT; last if (/include <net-snmp\/library\/default_store.h/);}# skip up to the include from the original filewhile(<NEW>) { last if (/include <default_store.h>/);}# include the entire new fileprint OUT <NEW>;# skip past the constant portion of the old filewhile (<ORIG>) { last if (/netsnmp_ds_get_bool/); $last = $_;}# We need the last two linesprint OUT $last;print OUT $_;# and the restprint 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 listwhile(<ORIG>) { print OUT; last if (/\%EXPORT_TAGS =/);}print OUT $tokenlist;while(<ORIG>) { last if (/netsnmp_ds_get_boolean/);}print OUT;# second listwhile(<ORIG>) { print OUT; last if (/\@EXPORT =/);}print OUT $tokenlist;while(<ORIG>) { last if (/\);/);}print OUT;# last sectionwhile(<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 endprint 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");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -