diff -r 000000000000 -r 83f4b4db085c sbsv1_os/e32toolp/genutil/err_formatter.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv1_os/e32toolp/genutil/err_formatter.pl Tue Feb 02 01:39:43 2010 +0200 @@ -0,0 +1,111 @@ +# Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# err_formatter.pm +# This tool is asked to invoke the Lada compiler and reformat the errors/warnings from CW +# style to Visual Studio error/warning reporting style. +# +# + + +use FindBin; + +my $command = join(' ', @ARGV); +open PIPE, "$command 2>&1 | "; + + +my $nextLineOfInterest = 0; +my $new_error_line=(); +my $comp_msg=(); +my $error_token=(); + +# The error/warning format for CW compiler for the option +# -msgstyle parseable is as follows: +# +# ToolName|ToolType|MsgType (FileName|Linenumber|digit|digit|digit|digit) +# = AtToken +# > ErrorMsg +# +# In the above format, the symbols '|', '(', ')', '=' and '>' occur always +# and this tool assumes there presence. +# Also, in the above, +# 'ToolName' here is mwccsym2.exe +# 'ToolType' here is Compiler +# 'MsgType' is either Error or Warning +# 'FileName' is the file that caused the compiler error/warning +# 'Linenumber' is the line at which the error/warning is reported +# 'AtToken' is the token at which the error/warning was reported. +# 'ErrorMsg' is the error message and it amrks the end of this error/warning. +# + +my @msgs; +while() +{ + if( $nextLineOfInterest == 1) + { + if($_ =~ /^>(.*)/) + { + $comp_msg .= $1; + $new_error_line .= "$comp_msg "; + $new_error_line .= ": $error_token" if($error_token); + push @msgs, $new_error_line; + + $nextLineOfInterest = 0; + $comp_msg = ""; + $error_token = ""; + next; + } + if($_ =~ /^=(.*)/) + { + $error_token = $1; + next; + } + if($_ =~ /\((.*)\|([0-9]+)\|([0-9]+)\|([0-9]+)\|([0-9]+)\|([0-9]+)\)/) + { +######### $1 is file name +######### $2 is line number + + $new_error_line = $1."("; + $new_error_line .= $2; + $new_error_line .= ")"; + $new_error_line .= ": "; + + next; + } + } + if($_ =~ /Compiler\|Error/) + { + $comp_msg = "Error: "; + $nextLineOfInterest = 1; + next; + } + elsif($_ =~ /Compiler\|Warning/) + { + $comp_msg = "Warning: "; + $nextLineOfInterest = 1; + next; + } + else + { + $nextLineOfInterest = 0; + push @msgs, $_; + } +} + +close PIPE; +my $msg; +foreach $msg (@msgs) +{ + print "$msg\n"; +} +