diff -r 27cf0a88d449 -r d50cda9d0682 williamr/convert_to_epl.pl --- a/williamr/convert_to_epl.pl Mon Feb 08 16:26:02 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,163 +0,0 @@ -#!/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 EPL license, keeping a copy of the original file -# in a parallel tree - -use strict; -use File::Copy; -use File::Path; - -if (scalar @ARGV != 2) - { - print <<'EOF'; -Incorrect number of arguments - -Usage: perl convert_to_epl.pl workdir savedir - -Recursively processes workdir to examine all of the text files and convert -all perfectly formed instances of the SFL copyright notice into EPL notices. - -If a file is modified, the original is first copied to the corresponding place -under savedir. - -It is safe to rerun this script if it stopped for any reason, as no converted -SFL notice will ever match on the second run through. -EOF - exit 1; - } - -my $work_root = $ARGV[0]; -my $saved_root = $ARGV[1]; - -$work_root =~ s/\\/\//g; # convert to Unix separators please -$saved_root =~ s/\\/\//g; - -print "* Processing $work_root, leaving the original of any modified file in $saved_root\n"; - -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 "Eclipse Public License v1.0"', - 'the URL "http://www.eclipse.org/legal/epl-v10.html"' -); - -my @errorfiles = (); -my @multinoticefiles = (); - -sub map_epl($$$) - { - my ($file,$shadowdir,$name) = @_; - - open FILE, "<$file" or print "ERROR: Cannot open $file: $!\n" and return "Cannot open"; - my @lines = ; - 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 $midline = shift @lines; - my $urlline = shift @lines; - 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, $midline, $urlline; - $updated += 1; - next; - } - else - { - if(!$updated) - { - my $lineno = 1 + (scalar @newlines); - print STDERR "Problem in $file at $lineno: incorrectly formatted >\n$line$midline$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 tree - -sub scan_directory($$) - { - my ($path, $shadow) = @_; - - 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_epl($newpath, $shadow, $file); - } - } - -scan_directory($work_root, $saved_root); - -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"; -