Add heuristic determination of package for Raptor errors and warnings
#!/usr/bin/perl# Copyright (c) 2009 Symbian Foundation Ltd# This component and the accompanying materials are made available# under the terms of the License "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:# Symbian Foundation Ltd - initial contribution.# # Contributors:## Description:# Map the SFL license to the EULA license, keeping a copy of the original file# in a parallel tree for creation of a "repair" kit to reinstate the SFLuse strict;use File::Copy;use File::Path;my $debug = 0;my @oldtext = ( 'terms of the License "Symbian Foundation License v1.0"', 'the URL "http://www.symbianfoundation.org/legal/sfl-v10.html"');my @newtext = ( 'terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members', 'the URL "http://www.symbianfoundation.org/legal/licencesv10.html"');my @errorfiles = ();my @multinoticefiles = ();sub map_eula($$$) { my ($file,$shadowdir,$name) = @_; open FILE, "<$file" or print "ERROR: Cannot open $file: $!\n" and return "Cannot open"; my @lines = <FILE>; close FILE; my $updated = 0; my @newlines = (); while (my $line = shift @lines) { # under the terms of the License "Symbian Foundation License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". my $pos1 = index $line, $oldtext[0]; if ($pos1 >= 0) { # be careful - oldtext is a prefix of newtext! if (index($line, $newtext[0]) >= 0) { # line already converted - nothing to do push @newlines, $line; next; } my @midlines = (); my $nextline; my $midlinecount = 1; while ($nextline = shift @lines) { if ($nextline !~ /^\s$/) { # non-blank line last if ($midlinecount == 0); $midlinecount -= 1; # keep going } push @midlines, $nextline; } my $urlline = $nextline; my $pos2 = index $urlline, $oldtext[1]; if ($pos2 >= 0) { # Found it - assume that there's only one instance substr $line, $pos1, length($oldtext[0]), $newtext[0]; substr $urlline, $pos2, length($oldtext[1]), $newtext[1]; push @newlines, $line, @midlines, $urlline; $updated += 1; next; } else { if(!$updated) { my $lineno = 1 + (scalar @newlines); print STDERR "Problem in $file at $lineno: incorrectly formatted >\n$line", join("",@midlines), "$urlline\n"; push @errorfiles, $file; } last; } } push @newlines, $line; } return if (!$updated); if ($updated > 1) { push @multinoticefiles, $file; print "! found $updated SFL notices in $file\n"; } mkpath($shadowdir, {verbose=>0}); move($file, "$shadowdir/$name") or die("Cannot move $file to $shadowdir/$name: $!\n"); open NEWFILE, ">$file" or die("Cannot overwrite $file: $!\n"); print NEWFILE @newlines, @lines; close NEWFILE or die("Failed to update $file: $!\n"); print "* updated $file\n"; }# Process treesub scan_directory($$) { my ($path, $shadow) = @_; return if lc $path eq "/epoc32/build"; opendir DIR, $path; my @files = grep !/^\.\.?$/, readdir DIR; closedir DIR; foreach my $file (@files) { my $newpath = "$path/$file"; my $newshadow = "$shadow/$file"; if (-d $newpath) { scan_directory($newpath, $newshadow); next; } next if (-B $newpath); # ignore binary files map_eula($newpath, $shadow, $file); } }scan_directory("/epoc32", "/sfl_epoc32");printf "%d problem files\n", scalar @errorfiles;print "\t", join("\n\t", @errorfiles), "\n";printf "%d files with multiple notices\n", scalar @multinoticefiles;print "\t", join("\n\t", @multinoticefiles), "\n";