makedefs.pl
上传用户:zlh9724
上传日期:2007-01-04
资源大小:1991k
文件大小:2k
源码类别:

浏览器

开发平台:

Unix_Linux

  1. #!/usr/local/bin/perl
  2. $NumberDefs'at = 24;            # target at sign column
  3. $NumberDefs'tab = 8;            # how wide a tab looks in your editor
  4. $NumberDefs'offset = 0;         # starting number
  5. $NumberDefs'index;
  6. sub NumberDefs'numberEach
  7. {
  8.     package NumberDefs;
  9.     local($name) = @_;
  10.     if ($name eq "") {
  11. print "n";
  12. next;
  13.     }
  14.     if ($offset == 0) {
  15. print "EXPORTSn";
  16.     }
  17.     print $name;
  18.     if ($name =~ /^;/) {
  19. ($module, $atsign, $start) = split(" ", $_);
  20. # print """, $module, "" ", $start;
  21. if ($start && $start > $offset) {
  22.     $offset = $start;
  23. } else {
  24.     $offset += 100;
  25. }
  26. $index = $offset;
  27.     }
  28.     $len = length($name);
  29.     if ($len >= $at) {
  30. print " ";
  31.     } else {
  32. $tabz = (($at-$len)/$tab);
  33. for ($i = 0; $i < $tabz; $i++) {
  34.     print "t";
  35. }
  36.     }
  37.     print "@ ", $index, "n";
  38.     $index ++;
  39. }
  40. # numberAll - call this to renumber a def file
  41. #
  42. sub NumberDefs'numberAll
  43. {
  44.     package NumberDefs;
  45.     $INPUT = $_[0];
  46.     while(<$INPUT>) {
  47. local($name) =  split(" ",$_);
  48. &NumberDefs'numberEach($name);
  49.     }
  50. }
  51. sub GrepPublic
  52. {
  53.     local($source) = @_;
  54.     if (!open (SOURCE, "../".$source)) {
  55. warn "Can't open ../$source: $!n"; 
  56. return;
  57.     }
  58.     &NumberDefs'numberEach(';'.$source); # add source file as a source
  59.     while (<SOURCE>) {
  60. if (!/^PUBLICs/) {
  61.             next;
  62.         }
  63.         if (!/(w*)W*(/) {
  64.             warn "assuming global: ", $_;
  65.             next;
  66.         }
  67.         local($func) = $1;
  68. #       printf "$_:"%s" $func:"%s"n", $_, $func;
  69.         &NumberDefs'numberEach($func);
  70.     }
  71. }
  72. if (@ARGV[0] =~ /@(.*)/) {
  73.     local($name) = $1;
  74.     if ($name =~ /w+/) {
  75. if (!open(LIST, $name)) {
  76.     die "Can't open "$1", $!";
  77. }
  78. while (<LIST>) {
  79.     chop;
  80.     &GrepPublic($_);
  81.     print "n";
  82. }
  83. exit 0;
  84.     }
  85.     while (<STDIN>) {
  86. chop;
  87. &GrepPublic($_);
  88. print "n";
  89.     }
  90.     exit 0;
  91. }
  92. foreach $source (@ARGV) {
  93.     &GrepPublic($source);
  94. }
  95. #&NumberDefs'numberAll(STDIN);