update_copyrights revision 59663800d2ec04777dae2791dd92aa563faf94c8
0ea2cddb8715a770e646895e16b7b8085f49167cChristian Maeder# Copyright (C) 1998-2001, 2004-2010, 2012-2016 Internet Systems Consortium, Inc. ("ISC")
306763c67bb99228487345b32ab8c5c6cd41f23cChristian Maeder# This Source Code Form is subject to the terms of the Mozilla Public
b4fbc96e05117839ca409f5f20f97b3ac872d1edTill Mossakowski# License, v. 2.0. If a copy of the MPL was not distributed with this
306763c67bb99228487345b32ab8c5c6cd41f23cChristian Maeder# file, You can obtain one at http://mozilla.org/MPL/2.0/.
95c3e5d11dcee331dc3876a9bf0c1d6daa38e2caChristian Maederrequire 5.002;
679d3f541f7a9ede4079e045f7758873bb901872Till Mossakowski# Map copyright owners to the files containing copyright messages.
679d3f541f7a9ede4079e045f7758873bb901872Till Mossakowski# The first line of the copyright message is not in the file;
306763c67bb99228487345b32ab8c5c6cd41f23cChristian Maeder# it is constructed by this script.
d21dd452cd68abade683103a5c0cfe6d02c5f17bTill Mossakowski# perl util/update_copyrights <util/copyrights
ba904a15082557e939db689fcfba0c68c9a4f740Christian Maeder# Map each copyright owner name to a reference to an array containing
0799b5dc3f06d2640e66e9ab54b8b217348fd719Christian Maeder# the lines of the copyright message.
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maedermy $keyword_pat = '\$(Id:.*|Revision:.*|Id|Revision)\$';
ba904a15082557e939db689fcfba0c68c9a4f740Christian Maeder open(COPYRIGHT, "<$f") || die "can't open $f: $!";
b9804822fb178b0fc27ce967a6a8cedc42c5bf90Christian Maeder($dummy,$dummy,$dummy,$dummy,$this_month,$this_year,$dummy,$dummy,$dummy) = localtime(time());
1b05bdb88b90d3c947351f262d7ae7d68f0a4a6fTill Mossakowski if (defined($years_list) && $years_list =~ /^PARENT:/) {
21dae7237ac384abdb94a81e00b3f099873ec623Till Mossakowski $parent =~ s/\.[^.]*$/.docbook/;
a3bcb365497d592616a4e527b426ec210dcd385cChristian Maeder $result = "$result <year>$_</year>\n" foreach (@_);
3bcd9d942601d59dd55a6069d8b2d1c33d7ced0eChristian Maeder $result = "$result <holder>$holder</holder>\n";
3bcd9d942601d59dd55a6069d8b2d1c33d7ced0eChristian Maeder my $a = copyright("Internet Systems Consortium, Inc. (\"ISC\")", @_);
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder # copyright notice is now generated from the source.
a3bcb365497d592616a4e527b426ec210dcd385cChristian Maeder my ($type, $owner) = split(/\./, $typeandowner);
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder print "$file: unknown copyright owner $owner\n";
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder if ($file eq "./CHANGES" || $file eq "./EXCLUDED" ||
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder open(SOURCE, "<$file") || die "can't open $file: $!";
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder # Remove 1-7 spaces followed by a tab into a single
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder # tab if at start of line or proceeded by tabs.
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder s/^(\t*) {1,7}\t/$1\t/ while (/^\t* {1,7}\t/);
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder s/^(\s{0,3}\d*\.)\s(\[\w{1,5}\])\s+(\S+)/$1\t$2\t\t$3/;
15bceb77af626f79747d46d35979640f229a4c71Christian Maeder s/^(\s{0,3}\d*\.)\s(\[\w{6,}\])\s+(\S+)/$1\t$2\t$3/;
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder # Convert 8 spaces into tabs if at start of line
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder open(TARGET, ">$file.new") || die "can't open $file.new: $!";
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder if (system("cmp -s $file.new $file") == 0) {
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder } elsif ($type =~ /^(SH|PERL|TCL|MAKE|CONF-SH|RNC)$/) {
1b05bdb88b90d3c947351f262d7ae7d68f0a4a6fTill Mossakowski $start_comment = "############################################################################\n";
1b05bdb88b90d3c947351f262d7ae7d68f0a4a6fTill Mossakowski $end_comment = "############################################################################\n"
21dae7237ac384abdb94a81e00b3f099873ec623Till Mossakowski $start_comment = "############################################################################\n";
e379124f467e5d0ef7d3c0ca238bff0521f70831Till Mossakowski $end_comment = "############################################################################\n"
e379124f467e5d0ef7d3c0ca238bff0521f70831Till Mossakowski } elsif ($type eq "ZONE" || $type eq "MC") {
e379124f467e5d0ef7d3c0ca238bff0521f70831Till Mossakowski } elsif ($type eq "HTML" || $type eq "SGML") {
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder print "$file: type '$type' not supported yet; skipping\n";
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder open(SOURCE, "<$file") || die "can't open $file: $!";
7297175957c5ad3c0498032190b1dee9ec5fb873Christian Maeder print "$file: unexpected yacc file start ",
1b05bdb88b90d3c947351f262d7ae7d68f0a4a6fTill Mossakowski last if $_ =~ /\*\//;
1b05bdb88b90d3c947351f262d7ae7d68f0a4a6fTill Mossakowski } elsif ($python_comment || $python_bin_comment) {
948f37fdb71c544ff4c907bc5863702648cf36e4Christian Maeder $_ = <SOURCE> if $_ eq "############################################################################\n";
1b05bdb88b90d3c947351f262d7ae7d68f0a4a6fTill Mossakowski $_ = <SOURCE> if $_ eq "############################################################################\n";
7297175957c5ad3c0498032190b1dee9ec5fb873Christian Maeder } elsif (($m4_comment || $zone_comment || $man_comment) &&
7297175957c5ad3c0498032190b1dee9ec5fb873Christian Maeder while (/^<!DOCTYPE/ || /^<!ENTITY/ || /^<\?xml-stylesheet/ || /^<\?xml /) {
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski last if s/.*-->//;
7bf4436b6f9987b070033a323757b206c898c1beChristian Maeder last if s/.*--->//;
b645cf3dc1e449038ed291bbd11fcc6e02b2fc7fChristian Maeder # Not very maintainable, but ok enough for now.
1b05bdb88b90d3c947351f262d7ae7d68f0a4a6fTill Mossakowski /This Source Code Form is subject to the terms of the Mozilla Public/ ||
1b05bdb88b90d3c947351f262d7ae7d68f0a4a6fTill Mossakowski /If a copy of the MPL was not distributed with this/ ||
1b05bdb88b90d3c947351f262d7ae7d68f0a4a6fTill Mossakowski /You can obtain one at http:\/\/mozilla.org\/MPL\/2.0\// ||
95c3e5d11dcee331dc3876a9bf0c1d6daa38e2caChristian Maeder open(TARGET, ">$file.new") || die "can't open $file.new: $!";
42c01284bba8d7c8d995c8dfb96ace57d28ed1bcTill Mossakowski print TARGET $before_copyright if $before_copyright;
74e82e43f5787027c5d4e523397525a259d6d001Christian Maeder print TARGET $start_comment if $start_comment;
2d2826f9db2c17275f91b0104940a60a2f9fd44dChristian Maeder if ($last_year != 0 && $year == $last_year + 1) {
95c3e5d11dcee331dc3876a9bf0c1d6daa38e2caChristian Maeder $years .= $last_year == 0 ? "$year" : ", $year";
95c3e5d11dcee331dc3876a9bf0c1d6daa38e2caChristian Maeder # Internet Systems Consortium: 2004 onwards.
c092fcac4b8f5c524c22ca579189c4487c13edf7Christian Maeder $noid = 1 if ($year > 2012 || ($year == 2012 && $this_month >= 5) );
b9804822fb178b0fc27ce967a6a8cedc42c5bf90Christian Maeder if ($last_year != 0 && $year == $last_year + 1) {
d21dd452cd68abade683103a5c0cfe6d02c5f17bTill Mossakowski $years .= $last_year == 0 ? "$year" : ", $year";
$last_year = $year;
print TARGET $end_comment if $end_comment;
$_ = $body;
$_ = $body;
undef $/;
$_ = <SOURCE>;
s:<articleinfo>.*?</articleinfo>:<articleinfo>\n$r </articleinfo>:s;