merge_copyrights revision 9c3531d72aeaad6c5f01efe6a1c82023e1379e4d
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes#!/usr/local/bin/perl -w
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes#
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# Copyright (C) 1998-2000 Internet Software Consortium.
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes#
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# Permission to use, copy, modify, and distribute this software for any
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# purpose with or without fee is hereby granted, provided that the above
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# copyright notice and this permission notice appear in all copies.
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes#
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# SOFTWARE.
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes# $Id: merge_copyrights,v 1.10 2000/06/22 22:00:38 tale Exp $
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes%file_types = ();
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes%file_years = ();
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes
cb2846ded4de1abbb5934b92132baf826f1babfebnicholesopen(COPYRIGHTS, "<util/copyrights") || die "can't open ./util/copyrights: $!";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholeswhile (<COPYRIGHTS>) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes chomp;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes ($file, $type, $years) = split;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_types{$file} = $type;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_years{$file} = $years;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes}
cb2846ded4de1abbb5934b92132baf826f1babfebnicholesclose(COPYRIGHTS);
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes$year += 1900;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes$find = "find . -type f -print";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes
cb2846ded4de1abbb5934b92132baf826f1babfebnicholesopen(FILES, "$find | sort |") || die "can't start \"$find\": $!";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholeswhile (<FILES>) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes chomp;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes next if (m%/\.\# | # CVS old conflict file
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes /CVS/ | # CVS directory
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes \.bak$ | # created by update_copyrights
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes /(dnssafe|openssl)/.*\.[ch]$ | # imported
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes doc/(draft|expired|rfc)/ # imported
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes %x);
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes if (!$file_types{$_}) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes if ($_ =~ /\.(c|h|css)$/) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_types{$_} = "C";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } elsif ($_ =~ /\.y$/) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_types{$_} = "YACC";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } elsif ($_ =~ /\.pl$/i) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_types{$_} = "PERL";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } elsif ($_ =~ /\.sh$/) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_types{$_} = "SH";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } elsif ($_ =~ /\.html$/) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_types{$_} = "HTML";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } elsif ($_ =~ /\.man$/) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_types{$_} = "MAN";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } elsif ($_ =~ /\/Makefile\.in$/) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_types{$_} = "MAKE";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } elsif ($_ =~ /\/named.?\.conf$/) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_types{$_} = "CONF-C";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } elsif ($_ =~ /\.(db|hint)(\.in)?$/) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_types{$_} = "ZONE";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } elsif ($_ =~ /(\/\.cvsignore|\.gif|\.jpg)$/i) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_types{$_} = "X";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } else {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_types{$_} = "?";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes }
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $blksize,$blocks)
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes = stat($_);
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes ($sec,$min,$hour,$mday,$mon,$c_year,$wday,$yday,$isdst) =
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes localtime($ctime);
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes ($sec,$min,$hour,$mday,$mon,$m_year,$wday,$yday,$isdst) =
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes localtime($mtime);
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $c_year += 1900;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $m_year += 1900;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes if ($m_year != $year || $c_year != $year) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes print "$_: must set copyright year(s) manually\n";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_years{$_} = "????";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } else {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_years{$_} = "$year";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes }
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes # keep perl from issuing warnings about "used only once"
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $dev = $ino = $mode = $nlink = $uid = $gid = $rdev = $size = 0;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $atime = $blksize = $blocks = 0;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } else {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes if ($file_types{$_} eq "X" || $file_years{$_} eq "????") {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes next;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes }
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes @years = split(/,/, $file_years{$_});
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $has_current = 0;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes foreach $fyear (@years) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes if ($fyear == $year) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $has_current = 1;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes }
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes }
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes if (!$has_current) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $blksize,$blocks)
0a39e7683f6611d66c55712f50bb240428d832a1bnicholes = stat($_);
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes ($sec,$min,$hour,$mday,$mon,$m_year,$wday,$yday,$isdst) =
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes localtime($mtime);
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $m_year += 1900;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes if ($m_year == $year) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $file_years{$_} .= ",$year";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes }
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes }
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes }
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes}
cb2846ded4de1abbb5934b92132baf826f1babfebnicholesclose(FILES);
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes
cb2846ded4de1abbb5934b92132baf826f1babfebnicholesopen(NEWCOPYRIGHTS, ">util/newcopyrights") ||
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes die "can't open newcopyrights: $!";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholesforeach $file (sort(keys(%file_types))) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes print NEWCOPYRIGHTS "$file";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $len = length($file);
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes if ($len >= 48) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $tabs = 1;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes } else {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $needed = int (48 - $len);
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $tabs = int ($needed / 8);
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes if ($needed % 8 != 0) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes $tabs++;
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes }
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes }
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes for ($i = 0; $i < $tabs; $i++) {
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes printf NEWCOPYRIGHTS "\t";
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes }
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes printf NEWCOPYRIGHTS "%s\t%s\n", $file_types{$file}, $file_years{$file};
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes}
cb2846ded4de1abbb5934b92132baf826f1babfebnicholesclose(NEWCOPYRIGHTS);
cb2846ded4de1abbb5934b92132baf826f1babfebnicholes