update_copyrights revision 168cf0ede1cf13a095e48af6749d88fbc432f096
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews# Copyright (C) 2004-2010, 2012-2015 Internet Systems Consortium, Inc. ("ISC")
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Copyright (C) 1998-2001 Internet Software Consortium.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Permission to use, copy, modify, and/or distribute this software for any
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# purpose with or without fee is hereby granted, provided that the above
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# copyright notice and this permission notice appear in all copies.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# PERFORMANCE OF THIS SOFTWARE.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinrequire 5.002;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Map copyright owners to the files containing copyright messages.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# The first line of the copyright message is not in the file;
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews# it is constructed by this script.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Map each copyright owner name to a reference to an array containing
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# the lines of the copyright message.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmy $keyword_pat = '\$(Id:.*|Revision:.*|Id|Revision)\$';
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein open(COPYRIGHT, "<$f") || die "can't open $f: $!";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein($dummy,$dummy,$dummy,$dummy,$this_month,$this_year,$dummy,$dummy,$dummy) = localtime(time());
1238b38c9f0ab563b762dc0fd00ac6c34c2b7295Automatic Updater if (defined($years_list) && $years_list =~ /^PARENT:/) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $parent =~ s/\.[^.]*$/.docbook/;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $result = "$result <year>$_</year>\n" foreach (@_);
1238b38c9f0ab563b762dc0fd00ac6c34c2b7295Automatic Updater my $a = copyright("Internet Systems Consortium, Inc. (\"ISC\")",
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein my $b = copyright("Internet Software Consortium.",
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews # copyright notice is now generated from the source.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein my ($type, $owner) = split(/\./, $typeandowner);
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print "$file: unknown copyright owner $owner\n";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if ($file eq "./CHANGES" || $file eq "./EXCLUDED" ||
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein open(SOURCE, "<$file") || die "can't open $file: $!";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # Remove 1-7 spaces followed by a tab into a single
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s/^(\s{0,3}\d*\.)\s(\[\w{1,5}\])\s+(\S+)/$1\t$2\t\t$3/;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s/^(\s{0,3}\d*\.)\s(\[\w{6,}\])\s+(\S+)/$1\t$2\t$3/;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # Convert 8 spaces into tabs if at start of line
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s/[ \t]*$//;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein open(TARGET, ">$file.new") || die "can't open $file.new: $!";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein } elsif ($type =~ /^(SH|PERL|TCL|MAKE|CONF-SH|RNC)$/) {
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater $start_comment = "############################################################################\n";
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater $end_comment = "############################################################################\n"
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater $start_comment = "############################################################################\n";
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater $end_comment = "############################################################################\n"
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater } elsif ($type eq "ZONE" || $type eq "MC") {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print "$file: type '$type' not supported yet; skipping\n";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein open(SOURCE, "<$file") || die "can't open $file: $!";
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews last if $_ =~ /\*\//;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein } elsif ($python_comment || $python_bin_comment) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $_ = <SOURCE> if $_ eq "############################################################################\n";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $_ = <SOURCE> if $_ eq "############################################################################\n";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein } elsif (($m4_comment || $zone_comment || $man_comment) &&
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein while (/^<!DOCTYPE/ || /^<!ENTITY/ || /^<\?xml-stylesheet/ || /^<\?xml /) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein last if s/.*-->//;
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater last if s/.*--->//;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein open(TARGET, ">$file.new") || die "can't open $file.new: $!";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print TARGET $before_copyright if $before_copyright;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if ($last_year != 0 && $year == $last_year + 1) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $years .= $last_year == 0 ? "$year" : ", $year";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if ($last_year != 0 && $year == $last_year + 1) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $years .= $last_year == 0 ? "$year" : ", $year";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $noid = 1 if ($year > 2012 || ($year == 2012 && $this_month >= 5) );
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if ($last_year != 0 && $year == $last_year + 1) {
4556ad3a270bf049b3225433a402666aaffe3c36Mark Andrews $years .= $last_year == 0 ? "$year" : ", $year";
4556ad3a270bf049b3225433a402666aaffe3c36Mark Andrews ($firstline, $secondline, @otherlines) = @$textp;
9c6a5d1f22f972232d7a9fd5c5fa64f10bacbdffAutomatic Updater print TARGET $secondline =~ /^$/ ? $nonspaceprefix : $prefix;
035992291cb70ec3be4046fcea921b4a6acb1c77Mark Andrews s:modify, and distribute:modify, and/or distribute: if ($andor);
035992291cb70ec3be4046fcea921b4a6acb1c77Mark Andrews print TARGET (/^$/ ? $nonspaceprefix : $prefix);
4556ad3a270bf049b3225433a402666aaffe3c36Mark Andrews # Remove 1-7 spaces followed by a tab into a single
4556ad3a270bf049b3225433a402666aaffe3c36Mark Andrews # tab if at start of line or proceeded by tabs.
4556ad3a270bf049b3225433a402666aaffe3c36Mark Andrews # Convert 8 spaces into tabs if at start of line
4556ad3a270bf049b3225433a402666aaffe3c36Mark Andrews s/[ \t]*$//;
bea931e17b7567f09107f93ab7e25c7f00abeb9cMark Andrews s/[ \t]*$//;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if ($type eq 'SGML' && m:<articleinfo>.*?</articleinfo>:s) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s:<articleinfo>.*?</articleinfo>:<articleinfo>\n$r </articleinfo>:s;
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater if ($type eq 'SGML' && m:<docinfo>.*?</docinfo>:s) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s:<docinfo>.*?</docinfo>:<docinfo>\n$r </docinfo>:s;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if ($type eq 'SGML' && m:<bookinfo>.*?</bookinfo>:s) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $r .= " <xi:include href=\"releaseinfo.xml\"/>\n";
bea931e17b7567f09107f93ab7e25c7f00abeb9cMark Andrews s:<bookinfo>.*?</bookinfo>:<bookinfo>\n$r </bookinfo>:s;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print TARGET $first if $first !~ /^\s*$/;