ad3f5c60b8
This assumes certain patterns for the paragraph that contains the FSF's address. It is not a generic tool. Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
167 lines
4.7 KiB
Perl
Executable file
167 lines
4.7 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
#
|
|
# Fix GPLv2 license blurbs that have the old FSF address at Temple Street,
|
|
# instead of the Franklin Street one. Files to be fixed are read from
|
|
# stdin. Typical usage would be:
|
|
#
|
|
# ./find-license-problems . |
|
|
# grep -vFx -f fix-old-fsf-address.exclude |
|
|
# ./fix-old-fsf-address
|
|
#
|
|
# Copyright 2010 Catalyst IT Ltd
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use File::Basename;
|
|
use File::Copy;
|
|
use File::Temp qw/ tempfile /;
|
|
|
|
|
|
my $temple = << 'eof';
|
|
You should have received a copy of the GNU General Public License along with
|
|
Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
|
|
Suite 330, Boston, MA 02111-1307 USA
|
|
eof
|
|
|
|
my $franklin = << 'eof';
|
|
You should have received a copy of the GNU General Public License along
|
|
with Koha; if not, write to the Free Software Foundation, Inc.,
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
eof
|
|
|
|
|
|
my $temple2 = << 'eof';
|
|
You should have received a copy of the GNU General Public License along with Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
|
|
Suite 330, Boston, MA 02111-1307 USA
|
|
eof
|
|
|
|
my $franklin2 = << 'eof';
|
|
You should have received a copy of the GNU General Public License along with Koha; if not, write to the Free Software Foundation, Inc., 51 Franklin Street,
|
|
Fifth Floor, Boston, MA 02110-1301 USA.
|
|
eof
|
|
|
|
|
|
my $temple3 = << 'eof';
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 50 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
eof
|
|
|
|
my $franklin3 = << 'eof';
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software Foundation, Inc.,
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
eof
|
|
|
|
|
|
my $temple4 = << 'eof';
|
|
You should have received a copy of the GNU General Public License
|
|
along with Zebra; see the file LICENSE.zebra. If not, write to the
|
|
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|
02111-1307, USA.
|
|
eof
|
|
|
|
my $franklin4 = << 'eof';
|
|
You should have received a copy of the GNU General Public License
|
|
along with Zebra; see the file LICENSE.zebra. If not, write to the
|
|
Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
|
|
MA 02110-1301 USA.
|
|
eof
|
|
|
|
|
|
my @patterns = ($temple, $temple2, $temple3, $temple4);
|
|
my @replacements = ($franklin, $franklin2, $franklin3, $franklin4);
|
|
|
|
|
|
sub hashcomment {
|
|
my ($str) = @_;
|
|
my @lines = split /\n/, $str;
|
|
my @result;
|
|
foreach my $line (@lines) {
|
|
push @result, "# $line\n";
|
|
}
|
|
return join "", @result
|
|
}
|
|
|
|
|
|
sub dashcomment {
|
|
my ($str) = @_;
|
|
my @lines = split /\n/, $str;
|
|
my @result;
|
|
foreach my $line (@lines) {
|
|
push @result, "-- $line\n";
|
|
}
|
|
return join "", @result
|
|
}
|
|
|
|
|
|
sub readfile {
|
|
my ($filename) = @_;
|
|
open(FILE, $filename) || die("Can't open $filename for reading");
|
|
my @lines;
|
|
while (my $line = <FILE>) {
|
|
push @lines, $line;
|
|
}
|
|
close(FILE);
|
|
return join '', @lines;
|
|
}
|
|
|
|
|
|
sub try_to_fix {
|
|
my ($data, @patterns) = @_;
|
|
return undef;
|
|
}
|
|
|
|
|
|
sub overwrite {
|
|
my ($filename, $data) = @_;
|
|
my ($fh, $tempname) = tempfile(DIR => dirname($filename));
|
|
print $fh $data;
|
|
close($fh);
|
|
copy($tempname, $filename);
|
|
unlink($tempname);
|
|
}
|
|
|
|
|
|
sub fix_temple_street {
|
|
my ($filename) = @_;
|
|
my $data = readfile($filename);
|
|
my @pats = map { ($_, hashcomment($_), dashcomment($_)) } @patterns;
|
|
my @repls = map { ($_, hashcomment($_), dashcomment($_)) } @replacements;
|
|
while (@pats) {
|
|
my $pat = shift @pats;
|
|
my $repl = shift @repls;
|
|
my $index = index($data, $pat);
|
|
next if $index == -1;
|
|
my $length = length($pat);
|
|
my $before = substr($data, 0, $index);
|
|
my $after = substr($data, $index + $length);
|
|
overwrite($filename, "$before$repl$after");
|
|
return;
|
|
}
|
|
die("Cannot find old address in $filename");
|
|
}
|
|
|
|
|
|
while (my $filename = <>) {
|
|
chomp $filename;
|
|
fix_temple_street($filename);
|
|
}
|