update_copyrights revision efd6c944a4ebd3fb65dc39f9172d322198b2b1d3
d6fa26d0adaec6c910115be34fe7a5a5f402c14fMark Andrews#!/usr/local/bin/perl -w
94bd918b63001277f1b28ae4581645f8a835688fBob Halley
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox Userdie "This program is being updated; talk to Bob.";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox Userif (@ARGV == 0) {
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User die "usage: update_copyrights <copyright_text>";
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User}
94bd918b63001277f1b28ae4581645f8a835688fBob Halley@copyright_text = ();
d6fa26d0adaec6c910115be34fe7a5a5f402c14fMark Andrewsopen(COPYRIGHT, "<$ARGV[0]") || die "can't open $ARGV[0]: $!";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein@copyright_text = <>;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinclose(COPYRIGHT);
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userwhile (<>) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ($file, $type, $years_list) = split(/\s+/);
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User @years = split(/,/, $years_list);
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User if ( ! -f $file ) {
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User print "$file: missing\n";
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User }
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User if ($type eq "X") {
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User print "$file: X type; skipping\n";
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User next;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein }
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User if ($type eq "C") {
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User $c_comment = 1;
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User } else {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print "$file: type '$type' not supported yet; skipping\n";
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User next;
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User }
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User open(SOURCE, "<$file") || die "can't open $file: $!";
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User $_ = <SOURCE>;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if (/^\/\*/) {
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User $_ = <SOURCE>;
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User if ($_ !~ /[Cc]opyright/) {
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User print "$file: non-copyright comment\n";
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User close(SOURCE);
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User next;
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User }
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User if ($_ !~ /\*\//) {
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User while (<SOURCE>) {
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User if ($_ =~ /\*\//) {
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User last;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $first = "";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein } else {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $first = $_;
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein open(TARGET, ">$file.new") || die "can't open $file.new: $!";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if ($c_comment) {
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User print TARGET "/*\n";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $prefix = " * ";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein }
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User print TARGET "${prefix}Copyright (C) ";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $first_year = 1;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein foreach $year (@years) {
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User if (! $first_year) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print TARGET ", ";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print TARGET "$year";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $first_year = 0;
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print TARGET " Internet Software Consortium.\n";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print TARGET "$prefix\n";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein foreach $_ (@copyright_text) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print TARGET "${prefix}$_";
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if ($c_comment) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print TARGET " */\n";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if ($first ne "") {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print TARGET $first;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein while (<SOURCE>) {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print TARGET $_;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein close(TARGET);
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein close(SOURCE);
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein rename("$file", "$file.bak") || die "rename($file, $file.bak): $!";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein rename("$file.new", "$file") || die "rename($file.new, $file): $!";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein}
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein