43d2e7a90517587f4549a58af1b450e476eab8f6Tinderbox User# Copyright (C) 1998-2001, 2004-2010, 2012-2017 Internet Systems Consortium, Inc. ("ISC")
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# file, You can obtain one at http://mozilla.org/MPL/2.0/.
5a6e6c2c9b2f6cf426aa2a682aa800765e26d540Andreas Gustafsson# Map copyright owners to the files containing copyright messages.
5a6e6c2c9b2f6cf426aa2a682aa800765e26d540Andreas Gustafsson# The first line of the copyright message is not in the file;
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence# it is constructed by this script.
5a6e6c2c9b2f6cf426aa2a682aa800765e26d540Andreas Gustafsson# Map each copyright owner name to a reference to an array containing
5a6e6c2c9b2f6cf426aa2a682aa800765e26d540Andreas Gustafsson# the lines of the copyright message.
6ca4964362ec37d6afbf614dbb9aaa2f525002f1Mark Andrewsmy $keyword_pat = '\$(Id:.*|Revision:.*|Id|Revision)\$';
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence open(COPYRIGHT, "<$f") || die "can't open $f: $!";
9640c35421ba0bb4af6b6bfbff695d2a0ac560b3Mark Andrews($dummy,$dummy,$dummy,$dummy,$this_month,$this_year,$dummy,$dummy,$dummy) = localtime(time());
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews if (defined($years_list) && $years_list =~ /^PARENT:/) {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews $parent =~ s/\.[^.]*$/.docbook/;
e107074f370ee86275bd64ab8bcaa429fec1c7e2Mark Andrews $result = "$result <year>$_</year>\n" foreach (@_);
e107074f370ee86275bd64ab8bcaa429fec1c7e2Mark Andrews $result = "$result <holder>$holder</holder>\n";
a809c57ab263613c79999653ad28fbe47fa4bfa3Mark Andrews my $a = copyright("Internet Systems Consortium, Inc. (\"ISC\")", @_);
f6161d8b90541b52946ae845bc8e2bec2647d6cbMark Andrews # copyright notice is now generated from the source.
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence my ($type, $owner) = split(/\./, $typeandowner);
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence print "$file: unknown copyright owner $owner\n";
17f0452d8584cbcd6772b6d79eeadfa462162a51Mark Andrews if ($file eq "./CHANGES" || $file eq "./EXCLUDED" ||
17f0452d8584cbcd6772b6d79eeadfa462162a51Mark Andrews open(SOURCE, "<$file") || die "can't open $file: $!";
17f0452d8584cbcd6772b6d79eeadfa462162a51Mark Andrews # Remove 1-7 spaces followed by a tab into a single
17f0452d8584cbcd6772b6d79eeadfa462162a51Mark Andrews # tab if at start of line or proceeded by tabs.
3b84724c44654f5c851b04acd71ba3fb6af133feMark Andrews s/^(\s{0,3}\d*\.)\s(\[\w{1,5}\])\s+(\S+)/$1\t$2\t\t$3/;
3b84724c44654f5c851b04acd71ba3fb6af133feMark Andrews s/^(\s{0,3}\d*\.)\s(\[\w{6,}\])\s+(\S+)/$1\t$2\t$3/;
17f0452d8584cbcd6772b6d79eeadfa462162a51Mark Andrews # Convert 8 spaces into tabs if at start of line
17f0452d8584cbcd6772b6d79eeadfa462162a51Mark Andrews s/[ \t]*$//;
17f0452d8584cbcd6772b6d79eeadfa462162a51Mark Andrews open(TARGET, ">$file.new") || die "can't open $file.new: $!";
2da2220fe7af2c45724b50b0187523b1fab0cf08Rob Austein } elsif ($type =~ /^(SH|PERL|TCL|MAKE|CONF-SH|RNC)$/) {
168cf0ede1cf13a095e48af6749d88fbc432f096Evan Hunt $start_comment = "############################################################################\n";
168cf0ede1cf13a095e48af6749d88fbc432f096Evan Hunt $end_comment = "############################################################################\n"
9640c35421ba0bb4af6b6bfbff695d2a0ac560b3Mark Andrews $start_comment = "############################################################################\n";
9640c35421ba0bb4af6b6bfbff695d2a0ac560b3Mark Andrews $end_comment = "############################################################################\n"
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence print "$file: type '$type' not supported yet; skipping\n";
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence open(SOURCE, "<$file") || die "can't open $file: $!";
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence last if $_ =~ /\*\//;
168cf0ede1cf13a095e48af6749d88fbc432f096Evan Hunt } elsif ($python_comment || $python_bin_comment) {
9640c35421ba0bb4af6b6bfbff695d2a0ac560b3Mark Andrews $_ = <SOURCE> if $_ eq "############################################################################\n";
168cf0ede1cf13a095e48af6749d88fbc432f096Evan Hunt $_ = <SOURCE> if $_ eq "############################################################################\n";
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence } elsif (($m4_comment || $zone_comment || $man_comment) &&
6715db6593ce9a271ac3131cd7a886feaa386a2eEvan Hunt while (/^<!DOCTYPE/ || /^<!ENTITY/ || /^<\?xml-stylesheet/ || /^<\?xml /) {
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence last if s/.*-->//;
9b84e4edd614109ec8401b53d9612c01bea03a25Mark Andrews last if s/.*-->//;
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence # Not very maintainable, but ok enough for now.
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews /This Source Code Form is subject to the terms of the Mozilla Public/ ||
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews /If a copy of the MPL was not distributed with this/ ||
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews /You can obtain one at http:\/\/mozilla.org\/MPL\/2.0\// ||
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence open(TARGET, ">$file.new") || die "can't open $file.new: $!";
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence print TARGET $before_copyright if $before_copyright;
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence print TARGET $start_comment if $start_comment;
0295f63b67bb09cd4d00dd1d9c2238c37beefed8Mark Andrews if ($last_year != 0 && $year == $last_year + 1) {
0295f63b67bb09cd4d00dd1d9c2238c37beefed8Mark Andrews $years .= $last_year == 0 ? "$year" : ", $year";
9640c35421ba0bb4af6b6bfbff695d2a0ac560b3Mark Andrews $noid = 1 if ($year > 2012 || ($year == 2012 && $this_month >= 5) );
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence if ($last_year != 0 && $year == $last_year + 1) {
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence $years .= $last_year == 0 ? "$year" : ", $year";
144a3203a6e1827d78fb046e92b15ece82e6e378Mark Andrews s:modify, and distribute:modify, and/or distribute: if ($andor);
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence print TARGET (/^$/ ? $nonspaceprefix : $prefix);
14731fe09a82ff330f999236ad40571de033d523Mark Andrews # Remove 1-7 spaces followed by a tab into a single
14731fe09a82ff330f999236ad40571de033d523Mark Andrews # tab if at start of line or proceeded by tabs.
14731fe09a82ff330f999236ad40571de033d523Mark Andrews # Convert 8 spaces into tabs if at start of line
14731fe09a82ff330f999236ad40571de033d523Mark Andrews s/[ \t]*$//;
79f0eedd657d75889009226aa7ce23eeac28df5cMark Andrews } elsif (($type eq "SGML" || $type eq "HTML" ||
30eec077db2bdcb6f2a0dc388a3cdde2ede75ec1Mark Andrews s/[ \t]*$//;
10e873cb368b0ed17a328e5421a0411eb90da0cbMark Andrews if ($type eq 'SGML' && m:<articleinfo>.*?</articleinfo>:s) {
10e873cb368b0ed17a328e5421a0411eb90da0cbMark Andrews s:<articleinfo>.*?</articleinfo>:<articleinfo>\n$r </articleinfo>:s;
e107074f370ee86275bd64ab8bcaa429fec1c7e2Mark Andrews if ($type eq 'SGML' && m:<docinfo>.*?</docinfo>:s) {
c61c6db1cea02006815184845fcf1b633b28163dMark Andrews s:<docinfo>.*?</docinfo>:<docinfo>\n$r </docinfo>:s;
e107074f370ee86275bd64ab8bcaa429fec1c7e2Mark Andrews if ($type eq 'SGML' && m:<bookinfo>.*?</bookinfo>:s) {
cf47fe2ddc9e738809b3b2d708ed2712188e7fc1Evan Hunt $r .= " <xi:include href=\"releaseinfo.xml\"/>\n";
e107074f370ee86275bd64ab8bcaa429fec1c7e2Mark Andrews s:<bookinfo>.*?</bookinfo>:<bookinfo>\n$r </bookinfo>:s;
ae07f624ff7218079a36fd8aa1e2e1f76c1399c6Mark Andrews if ($type eq 'SGML' && m:<!-- insert copyright start -->.*?<!-- insert copyright end -->:s) {
ae07f624ff7218079a36fd8aa1e2e1f76c1399c6Mark Andrews s:<!-- insert copyright start -->.*?<!-- insert copyright end -->:<!-- insert copyright start -->\n$r <!-- insert copyright end -->:s;
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence ($end = $end_comment) =~ s/^\s*(.*)\n/ $1\n/;
6ca4964362ec37d6afbf614dbb9aaa2f525002f1Mark Andrews $end = "\n$nonspaceprefix" if ($type eq "MAN");
f4a7d04843eb62c92f2d4ff338da49ae86e3279bDavid Lawrence print TARGET $first if $first !~ /^\s*$/;