update_copyrights revision 43d2e7a90517587f4549a58af1b450e476eab8f6
a6a23642eaf383add7a0be045c01e7dd8278ccafAndreas Gustafsson# Copyright (C) 1998-2001, 2004-2010, 2012-2017 Internet Systems Consortium, Inc. ("ISC")
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews# This Source Code Form is subject to the terms of the Mozilla Public
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews# License, v. 2.0. If a copy of the MPL was not distributed with this
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews# file, You can obtain one at http://mozilla.org/MPL/2.0/.
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrewsrequire 5.002;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews# Map copyright owners to the files containing copyright messages.
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews# The first line of the copyright message is not in the file;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews# it is constructed by this script.
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews# Map each copyright owner name to a reference to an array containing
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews# the lines of the copyright message.
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrewsmy $keyword_pat = '\$(Id:.*|Revision:.*|Id|Revision)\$';
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews open(COPYRIGHT, "<$f") || die "can't open $f: $!";
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater($dummy,$dummy,$dummy,$dummy,$this_month,$this_year,$dummy,$dummy,$dummy) = localtime(time());
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews if (defined($years_list) && $years_list =~ /^PARENT:/) {
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews $parent =~ s/\.[^.]*$/.docbook/;
22f0b13f28a7df3b348b18848d0ccd745ea88c3cAndreas Gustafsson $result = "$result <year>$_</year>\n" foreach (@_);
a3edcadfffbe617a419cdbe1bebb95f68a0eda1eMark Andrews $result = "$result <holder>$holder</holder>\n";
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews my $a = copyright("Internet Systems Consortium, Inc. (\"ISC\")", @_);
a3edcadfffbe617a419cdbe1bebb95f68a0eda1eMark Andrews # copyright notice is now generated from the source.
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews my ($type, $owner) = split(/\./, $typeandowner);
97bb3725292d3f74bcb0a32be6a76b2da34ba494Andreas Gustafsson print "$file: unknown copyright owner $owner\n";
a3edcadfffbe617a419cdbe1bebb95f68a0eda1eMark Andrews if ($file eq "./CHANGES" || $file eq "./EXCLUDED" ||
22f0b13f28a7df3b348b18848d0ccd745ea88c3cAndreas Gustafsson open(SOURCE, "<$file") || die "can't open $file: $!";
22f0b13f28a7df3b348b18848d0ccd745ea88c3cAndreas Gustafsson # Remove 1-7 spaces followed by a tab into a single
276e28f813ffef042d5a6e9f3373ef4e2ad37996Mark Andrews # tab if at start of line or proceeded by tabs.
8b1cba45ade83893c009b37f47d5478e97eb61d2Automatic Updater s/^(\t*) {1,7}\t/$1\t/ while (/^\t* {1,7}\t/);
a3edcadfffbe617a419cdbe1bebb95f68a0eda1eMark Andrews s/^(\s{0,3}\d*\.)\s(\[\w{1,5}\])\s+(\S+)/$1\t$2\t\t$3/;
a3edcadfffbe617a419cdbe1bebb95f68a0eda1eMark Andrews s/^(\s{0,3}\d*\.)\s(\[\w{6,}\])\s+(\S+)/$1\t$2\t$3/;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews # Convert 8 spaces into tabs if at start of line
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews s/[ \t]*$//;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews open(TARGET, ">$file.new") || die "can't open $file.new: $!";
4a71c59d2bf32585c5dd18f4630d5f10e56a1ab3Automatic Updater } elsif ($type =~ /^(SH|PERL|TCL|MAKE|CONF-SH|RNC)$/) {
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews $start_comment = "############################################################################\n";
1e6032fe392369df4645874f1f273bb8aa859c00Automatic Updater $end_comment = "############################################################################\n"
3cddb2c552ee6582e8db0849c28747f6b6ca57feAutomatic Updater $start_comment = "############################################################################\n";
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews $end_comment = "############################################################################\n"
22f0b13f28a7df3b348b18848d0ccd745ea88c3cAndreas Gustafsson } elsif ($type eq "HTML" || $type eq "SGML") {
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews print "$file: type '$type' not supported yet; skipping\n";
97bb3725292d3f74bcb0a32be6a76b2da34ba494Andreas Gustafsson open(SOURCE, "<$file") || die "can't open $file: $!";
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews last if $_ =~ /\*\//;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews } elsif ($python_comment || $python_bin_comment) {
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews $_ = <SOURCE> if $_ eq "############################################################################\n";
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews $_ = <SOURCE> if $_ eq "############################################################################\n";
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews } elsif (($m4_comment || $zone_comment || $man_comment) &&
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews while (/^<!DOCTYPE/ || /^<!ENTITY/ || /^<\?xml-stylesheet/ || /^<\?xml /) {
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews last if s/.*-->//;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews last if s/.*--->//;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews # Not very maintainable, but ok enough for now.
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews /This Source Code Form is subject to the terms of the Mozilla Public/ ||
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews /If a copy of the MPL was not distributed with this/ ||
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews /You can obtain one at http:\/\/mozilla.org\/MPL\/2.0\// ||
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews open(TARGET, ">$file.new") || die "can't open $file.new: $!";
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews print TARGET $before_copyright if $before_copyright;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews if ($last_year != 0 && $year == $last_year + 1) {
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews $years .= $last_year == 0 ? "$year" : ", $year";
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews $noid = 1 if ($year > 2012 || ($year == 2012 && $this_month >= 5) );
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews if ($last_year != 0 && $year == $last_year + 1) {
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews $years .= $last_year == 0 ? "$year" : ", $year";
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews s:modify, and distribute:modify, and/or distribute: if ($andor);
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews print TARGET (/^$/ ? $nonspaceprefix : $prefix);
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews # Remove 1-7 spaces followed by a tab into a single
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews # tab if at start of line or proceeded by tabs.
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews # Convert 8 spaces into tabs if at start of line
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews s/[ \t]*$//;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews } elsif (($type eq "SGML" || $type eq "HTML" ||
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews s/[ \t]*$//;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews if ($type eq 'SGML' && m:<articleinfo>.*?</articleinfo>:s) {
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews s:<articleinfo>.*?</articleinfo>:<articleinfo>\n$r </articleinfo>:s;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews if ($type eq 'SGML' && m:<docinfo>.*?</docinfo>:s) {
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews s:<docinfo>.*?</docinfo>:<docinfo>\n$r </docinfo>:s;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews if ($type eq 'SGML' && m:<bookinfo>.*?</bookinfo>:s) {
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews $r .= " <xi:include href=\"releaseinfo.xml\"/>\n";
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews s:<bookinfo>.*?</bookinfo>:<bookinfo>\n$r </bookinfo>:s;
848dcebe28e032abfc66e7f10686e1b04a8516feMark Andrews if ($type eq 'SGML' && m:<!-- insert copyright start -->.*?<!-- insert copyright end -->:s) {