#!/usr/local/bin/perl

$nprocs = 4;

if( @ARGV[0] eq '') {print "usage: bugsort <file> [#nprocs]\n";exit;}
$file=@ARGV[0];

if( @ARGV[1] ne '') {$nprocs = @ARGV[1]-1;}

open(OUT,'>bug.new') || die "Cannot open bug.new $!";

open(F,$file) || die "Cannot open $file: $!";
while (<F>) {
  if(/(\s*BUG: 0:.*)\r/  || /(\s*BUG: 0:.*)/
  || /(\s*MAP: 0:.*)\r/  || /(\s*MAP: 0:.*)/
  || /(\s*COM: 0:.*)\r/  || /(\s*COM: 0:.*)/
  || /(\s*MEM: 0:.*)\r/  || /(\s*MEM: 0:.*)/  
  || /(\s*OLD: 0:.*)\r/  || /(\s*OLD: 0:.*)/  
  || /(\s*OUT: 0:.*)\r/  || /(\s*OUT: 0:.*)/  ) {
     print OUT "$1\n";next;
  }
  if(/(\s*BUG):(.*):(.*)\r/ || /(\s*BUG):(.*):(.*)/
  || /(\s*MAP):(.*):(.*)\r/ || /(\s*MAP):(.*):(.*)/ 
  || /(\s*COM):(.*):(.*)\r/ || /(\s*COM):(.*):(.*)/ 
  || /(\s*MEM):(.*):(.*)\r/ || /(\s*MEM):(.*):(.*)/
  || /(\s*OLD):(.*):(.*)\r/ || /(\s*OLD):(.*):(.*)/
  || /(\s*OUT):(.*):(.*)\r/ || /(\s*OUT):(.*):(.*)/) {
     $count[$2]=$count[$2]+1;
     $record[$count[$2]+$2*1000]="$1:$2:$3\n";
     next;
  }
  if(/(.*)\r\r/ || /(.*)\r/ ) {print OUT "$1\n";next;}
  print OUT;
}
close(F);

print OUT   "\n";
for ($i = 1; $i <= $nprocs; ++$i) {
print OUT   "=== node$i ========================\n";
   for ($j = 1; $j <= $count[$i]; ++$j) {
      print OUT "$record[$j+$i*1000]";
   }
}

print OUT   "=== eof ========================\n";
close(OUT);
print "bug.new prepared\n";





