From 6a4bc7bc4bf6fdd6034bcc4a14d12c1b2e8fae9f Mon Sep 17 00:00:00 2001 From: Sylvain Pion Date: Thu, 11 Sep 2003 15:12:51 +0000 Subject: [PATCH] - Script to convert to the new style headers. --- .../Maintenance/package_handling/new_headers | 200 ++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100755 Packages/Maintenance/package_handling/new_headers diff --git a/Packages/Maintenance/package_handling/new_headers b/Packages/Maintenance/package_handling/new_headers new file mode 100755 index 00000000000..725a8cb7038 --- /dev/null +++ b/Packages/Maintenance/package_handling/new_headers @@ -0,0 +1,200 @@ +#!/usr/local/bin/perl -w + +use strict; +#use Cwd; +use File::Copy; +#use File::Basename; +#use File::Find; +use Getopt::Std; + +# This script updated a file to the new style header. + +sub usage() +{ + print STDERR<<"EOF"; +usage: + $0 [-h] [-q owner] file1 ... + + -h show this message and quit + -q owner (default: LGPL, + otherwise it's QPL, with choices among : + UU, INRIA, ETHZ, FUB, MPI, RISC, TAU, HW, + which will be expanded) +EOF +} + +my $lgpl_owner="Utrecht University (The Netherlands), +// ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany), +// INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg +// (Germany), Max-Planck-Institute Saarbrucken (Germany), RISC Linz (Austria), +// and Tel-Aviv University (Israel)."; + +my %qpl_owners=("UU" => "Utrecht University (The Netherlands)", + "INRIA" => "INRIA Sophia-Antipolis (France)", + "ETHZ" => "ETH Zurich (Switzerland)", + "FUB" => "Freie Universitaet Berlin (Germany)", + "MPI" => "Max-Planck-Institute Saarbrucken (Germany)", + "RISC" => "RISC Linz (Austria)", + "TAU" => "Tel-Aviv University (Israel)", + "HW" => "Martin-Luther-University Halle-Wittenberg (Germany)"); + +sub gjmove($$) +{ + return 1 if rename($_[0], $_[1] ); + return (system('mv', "$_[0]", "$_[1]") == 0); +} + +#----------------------------------------------------------------# +# initialization # +#----------------------------------------------------------------# + +my $TEMPFILE; + + +sub print_qpl_license() +{ + print TEMPFILE <<'END_OF_LICENSE'; +// This file is part of CGAL (www.cgal.org); you may redistribute it under +// the terms of the Q Public License version 1.0. +// See the file LICENSE.QPL distributed with CGAL. +// +// Licensees holding a valid commercial license may use this file in +// accordance with the commercial license agreement provided with the software. +END_OF_LICENSE +} + +sub print_lgpl_license() +{ + print TEMPFILE <<'END_OF_LICENSE'; +// This file is part of CGAL (www.cgal.org); you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; version 2.1 of the License. +// See the file LICENSE.LGPL distributed with CGAL. +END_OF_LICENSE +} + +#----------------------------------------------------------------# +# check_and_update_2 # +#----------------------------------------------------------------# + +sub check_and_update_2($$) +{ + my ($filename, $owner) = @_; + my $header_position = 1; +# 1:before header; 2: in first part; 3: in second part 4: after header. + + my $text_before_header = 0; + while ( ) { + if ( m|^\s*//\s*={10,}\s*$| ) { + $header_position = 2; + last; + } + if ( $_ !~ m|^\s*$| ) { + $text_before_header = 1; + } + print TEMPFILE $_; + } + if ($header_position != 2) { + print FILE_CHECKS "$filename has no header.\n"; + return 0; + } + if ($text_before_header) { + print FILE_CHECKS "$filename has text before the header.\n"; + } + $_ = ; + $_ = while (m|^\s*//\s*$|); + if ($_ !~ m<^\s*//\s*Copyright\s*\(c\)\s*\d{4}([-,]\s?\d{4})*\s+(t|T)he CGAL Consortium\s*$> ) { + print FILE_CHECKS "$filename has no valid copyright notice.\n"; + return 0; + } + + if (defined($owner)) { + # QPL case. + my $qpl_owner=$qpl_owners{$owner}; + s/(t|T)he CGAL Consortium\s*$/ $qpl_owner/; + print TEMPFILE $_; + print TEMPFILE ".\n// All rights reserved.\n//\n"; + print_qpl_license; + } else { + # LGPL case. + s/(t|T)he CGAL Consortium\s*$/ $lgpl_owner/; + print TEMPFILE $_; + print TEMPFILE " All rights reserved.\n//\n"; + print_lgpl_license; + } + + print TEMPFILE <<'END_OF_DISCLAIMER'; +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +// +// $Source$ +// $Revision$ $Date$ +// $Name$ +// +END_OF_DISCLAIMER + + my ($authors_seen) = (0); + while ( ) { + next if ($_ !~ m|^\s*//| ); + ++$authors_seen if m<^\s*//\s*author(s|\(s\))?\s*:>; + --$authors_seen if m<^\s*//\s*coordinator(s|\(s\))?\s*:>; + if ($authors_seen > 0) { + if (! m|//\s*$|) { + s/author/Author/; + print TEMPFILE $_; # we keep the authors + } + } + last if /======/; + } + + while ( ) { + print TEMPFILE $_; + } + + return 0; +} + +sub check_and_update_file($$) +{ + my ($filename, $owner) = @_; + open SOURCE_FILE, "<$filename" || die "Error opening $filename: $!\n"; + open TEMPFILE, ">$TEMPFILE" || die; + check_and_update_2($filename, $owner); + close SOURCE_FILE || die "Error closing $filename: $!"; + close TEMPFILE || die "Error closing temporary file: $!\n"; + gjmove($TEMPFILE, $filename ) + || warn "Could not update file $filename\n"; +} + + +#$::PARENT_DIR=cwd(); + +sub main() +{ + umask(002); + + getopts('hq:'); + if ($::opt_h ) { + usage; + return; + } + $::opt_h = 0; + + if ($::opt_q and not $qpl_owners{$::opt_q}) { + print "Unknown QPL owner\n"; + return; + } + + $TEMPFILE="tmp.$$"; + + open FILE_CHECKS, ">-"; + my $filename; + foreach $filename (@ARGV) { + check_and_update_file($filename, $::opt_q); + } + close FILE_CHECKS; +} + +main; +