119304Spetersub make { 219304Speter open MAKE, "make 2>&1 1>/dev/null |"; 319304Speter while(<MAKE>) { 419304Speter if (($file, $line, $msg) = /([^: ]*):(\d*):(.+)/) { 519304Speter if ($file == $prevfile && $line == $prevline) { 619304Speter $error[-1]->[2] .= "\n$msg"; 719304Speter } else { 819304Speter push @error, [$file, $line, $msg]; 919304Speter ($prevline, $prevfile) = ($line, $file); 1019304Speter } 1119304Speter } 1219304Speter } 1319304Speter close MAKE; 1419304Speter} 1519304Speter 1619304Spetersub nexterror { 1719304Speter if ($index <= $#error) { 1819304Speter my $error = $error[$index++]; 1919304Speter $curscr->Edit($error->[0]); 2019304Speter $curscr->SetCursor($error->[1],0); 2119304Speter $curscr->Msg($error->[2]); 2219304Speter } 2319304Speter} 2419304Speter 2519304Speter# preverror is left as an exercise 2619304Speter 2719304Speter1; 28