diff options
Diffstat (limited to 'build-aux/update-copyright')
-rwxr-xr-x | build-aux/update-copyright | 274 |
1 files changed, 0 insertions, 274 deletions
diff --git a/build-aux/update-copyright b/build-aux/update-copyright deleted file mode 100755 index 2d20d21..0000000 --- a/build-aux/update-copyright +++ /dev/null @@ -1,274 +0,0 @@ -eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" "$@"' - & eval 'exec perl -wS -0777 -pi "$0" $argv:q' - if 0; -# Update an FSF copyright year list to include the current year. - -my $VERSION = '2016-01-12.23:13'; # UTC - -# Copyright (C) 2009-2017 Free Software Foundation, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# Written by Jim Meyering and Joel E. Denny - -# The arguments to this script should be names of files that contain -# copyright statements to be updated. The copyright holder's name -# defaults to "Free Software Foundation, Inc." but may be changed to -# any other name by using the "UPDATE_COPYRIGHT_HOLDER" environment -# variable. -# -# For example, you might wish to use the update-copyright target rule -# in maint.mk from gnulib's maintainer-makefile module. -# -# Iff a copyright statement is recognized in a file and the final -# year is not the current year, then the statement is updated for the -# new year and it is reformatted to: -# -# 1. Fit within 72 columns. -# 2. Convert 2-digit years to 4-digit years by prepending "19". -# 3. Expand copyright year intervals. (See "Environment variables" -# below.) -# -# A warning is printed for every file for which no copyright -# statement is recognized. -# -# Each file's copyright statement must be formatted correctly in -# order to be recognized. For example, each of these is fine: -# -# Copyright @copyright{} 1990-2005, 2007-2009 Free Software -# Foundation, Inc. -# -# # Copyright (C) 1990-2005, 2007-2009 Free Software -# # Foundation, Inc. -# -# /* -# * Copyright © 90,2005,2007-2009 -# * Free Software Foundation, Inc. -# */ -# -# However, the following format is not recognized because the line -# prefix changes after the first line: -# -# ## Copyright (C) 1990-2005, 2007-2009 Free Software -# # Foundation, Inc. -# -# However, any correctly formatted copyright statement following -# a non-matching copyright statements would be recognized. -# -# The exact conditions that a file's copyright statement must meet -# to be recognized are: -# -# 1. It is the first copyright statement that meets all of the -# following conditions. Subsequent copyright statements are -# ignored. -# 2. Its format is "Copyright (C)", then a list of copyright years, -# and then the name of the copyright holder. -# 3. The "(C)" takes one of the following forms or is omitted -# entirely: -# -# A. (C) -# B. (c) -# C. @copyright{} -# D. © -# -# 4. The "Copyright" appears at the beginning of a line, except that it -# may be prefixed by any sequence (e.g., a comment) of no more than -# 5 characters -- including white space. -# 5. Iff such a prefix is present, the same prefix appears at the -# beginning of each remaining line within the FSF copyright -# statement. There is one exception in order to support C-style -# comments: if the first line's prefix contains nothing but -# whitespace surrounding a "/*", then the prefix for all subsequent -# lines is the same as the first line's prefix except with each of -# "/" and possibly "*" replaced by a " ". The replacement of "*" -# by " " is consistent throughout all subsequent lines. -# 6. Blank lines, even if preceded by the prefix, do not appear -# within the FSF copyright statement. -# 7. Each copyright year is 2 or 4 digits, and years are separated by -# commas or dashes. Whitespace may appear after commas. -# -# Environment variables: -# -# 1. If UPDATE_COPYRIGHT_FORCE=1, a recognized FSF copyright statement -# is reformatted even if it does not need updating for the new -# year. If unset or set to 0, only updated FSF copyright -# statements are reformatted. -# 2. If UPDATE_COPYRIGHT_USE_INTERVALS=1, every series of consecutive -# copyright years (such as 90, 1991, 1992-2007, 2008) in a -# reformatted FSF copyright statement is collapsed to a single -# interval (such as 1990-2008). If unset or set to 0, all existing -# copyright year intervals in a reformatted FSF copyright statement -# are expanded instead. -# If UPDATE_COPYRIGHT_USE_INTERVALS=2, convert a sequence with gaps -# to the minimal containing range. For example, convert -# 2000, 2004-2007, 2009 to 2000-2009. -# 3. For testing purposes, you can set the assumed current year in -# UPDATE_COPYRIGHT_YEAR. -# 4. The default maximum line length for a copyright line is 72. -# Set UPDATE_COPYRIGHT_MAX_LINE_LENGTH to use a different length. -# 5. Set UPDATE_COPYRIGHT_HOLDER if the copyright holder is other -# than "Free Software Foundation, Inc.". - -use strict; -use warnings; - -my $copyright_re = 'Copyright'; -my $circle_c_re = '(?:\([cC]\)|@copyright\{}|\\\\\(co|©)'; -my $holder = $ENV{UPDATE_COPYRIGHT_HOLDER}; -$holder ||= 'Free Software Foundation, Inc.'; -my $prefix_max = 5; -my $margin = $ENV{UPDATE_COPYRIGHT_MAX_LINE_LENGTH}; -!$margin || $margin !~ m/^\d+$/ - and $margin = 72; - -my $tab_width = 8; - -my $this_year = $ENV{UPDATE_COPYRIGHT_YEAR}; -if (!$this_year || $this_year !~ m/^\d{4}$/) - { - my ($sec, $min, $hour, $mday, $month, $year) = localtime (time ()); - $this_year = $year + 1900; - } - -# Unless the file consistently uses "\r\n" as the EOL, use "\n" instead. -my $eol = /(?:^|[^\r])\n/ ? "\n" : "\r\n"; - -my $leading; -my $prefix; -my $ws_re; -my $stmt_re; -while (/(^|\n)(.{0,$prefix_max})$copyright_re/g) - { - $leading = "$1$2"; - $prefix = $2; - if ($prefix =~ /^(\s*\/)\*(\s*)$/) - { - $prefix =~ s,/, ,; - my $prefix_ws = $prefix; - $prefix_ws =~ s/\*/ /; # Only whitespace. - if (/\G(?:[^*\n]|\*[^\/\n])*\*?\n$prefix_ws/) - { - $prefix = $prefix_ws; - } - } - $ws_re = '[ \t\r\f]'; # \s without \n - $ws_re = - "(?:$ws_re*(?:$ws_re|\\n" . quotemeta($prefix) . ")$ws_re*)"; - my $holder_re = $holder; - $holder_re =~ s/\s/$ws_re/g; - my $stmt_remainder_re = - "(?:$ws_re$circle_c_re)?" - . "$ws_re(?:(?:\\d\\d)?\\d\\d(?:,$ws_re?|-))*" - . "((?:\\d\\d)?\\d\\d)$ws_re$holder_re"; - if (/\G$stmt_remainder_re/) - { - $stmt_re = - quotemeta($leading) . "($copyright_re$stmt_remainder_re)"; - last; - } - } -if (defined $stmt_re) - { - /$stmt_re/ or die; # Should never die. - my $stmt = $1; - my $final_year_orig = $2; - - # Handle two-digit year numbers like "98" and "99". - my $final_year = $final_year_orig; - $final_year <= 99 - and $final_year += 1900; - - if ($final_year != $this_year) - { - # Update the year. - $stmt =~ s/\b$final_year_orig\b/$final_year, $this_year/; - } - if ($final_year != $this_year || $ENV{'UPDATE_COPYRIGHT_FORCE'}) - { - # Normalize all whitespace including newline-prefix sequences. - $stmt =~ s/$ws_re/ /g; - - # Put spaces after commas. - $stmt =~ s/, ?/, /g; - - # Convert 2-digit to 4-digit years. - $stmt =~ s/(\b\d\d\b)/19$1/g; - - # Make the use of intervals consistent. - if (!$ENV{UPDATE_COPYRIGHT_USE_INTERVALS}) - { - $stmt =~ s/(\d{4})-(\d{4})/join(', ', $1..$2)/eg; - } - else - { - $stmt =~ - s/ - (\d{4}) - (?: - (,\ |-) - ((??{ - if ($2 eq '-') { '\d{4}'; } - elsif (!$3) { $1 + 1; } - else { $3 + 1; } - })) - )+ - /$1-$3/gx; - - # When it's 2, emit a single range encompassing all year numbers. - $ENV{UPDATE_COPYRIGHT_USE_INTERVALS} == 2 - and $stmt =~ s/\b(\d{4})\b.*\b(\d{4})\b/$1-$2/; - } - - # Format within margin. - my $stmt_wrapped; - my $text_margin = $margin - length($prefix); - if ($prefix =~ /^(\t+)/) - { - $text_margin -= length($1) * ($tab_width - 1); - } - while (length $stmt) - { - if (($stmt =~ s/^(.{1,$text_margin})(?: |$)//) - || ($stmt =~ s/^([\S]+)(?: |$)//)) - { - my $line = $1; - $stmt_wrapped .= $stmt_wrapped ? "$eol$prefix" : $leading; - $stmt_wrapped .= $line; - } - else - { - # Should be unreachable, but we don't want an infinite - # loop if it can be reached. - die; - } - } - - # Replace the old copyright statement. - s/$stmt_re/$stmt_wrapped/; - } - } -else - { - print STDERR "$ARGV: warning: copyright statement not found\n"; - } - -# Local variables: -# mode: perl -# indent-tabs-mode: nil -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "my $VERSION = '" -# time-stamp-format: "%:y-%02m-%02d.%02H:%02M" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "'; # UTC" -# End: |