#!/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 = ) { 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); }