blob: f699db76e9e03253df0c6acc4e568a78826bbee1 [file] [log] [blame]
eval '(exit $?0)' && eval 'exec perl -wS -i "$0" ${1+"$@"}'
& eval 'exec perl -wS -i "$0" $argv:q'
if 0;
# Copyright (C) 2015-2022 by
# Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
# and distributed under the terms of the FreeType project license,
# LICENSE.TXT. By continuing to use, modify, or distribute this file you
# indicate that you have read the license and understand and accept it
# fully.
# [Note: This script is expected to be called by the shell, which in turn
# calls perl automatically. The nifty start-up code above is based on
# gnulib's `update-copyright' script; it is a more portable replacement for
# the shebang, using the first `perl' program in the shell's path instead.]
# Usage:
#
# update-copyright-year file1 [file2 ...]
# This script handles copyright entries like
#
# Copyright 2000 by
# foobar
#
# or
#
# /* Copyright (c) 2000, 2001, 2004-2007 by */
# /* foobar */
#
# and replaces them uniformly with
#
# Copyright (C) 2000-2021
# foobar
#
# and
#
# /* Copyright (C) 2000-2021 by */
# /* foobar */
#
# (assuming that the current year is 2021). As can be seen, the line length
# is retained if there is non-whitespace after the word `by' on the same
# line.
use strict;
my (undef, undef, undef,
undef, undef, $year,
undef, undef, undef) = localtime(time);
$year += 1900;
my $replaced = 0;
# Loop over all input files; option `-i' (issued at the very beginning of
# this script) makes perl edit them in-place.
while (<>)
{
# Only handle the first copyright notice in a file.
if (!$replaced)
{
# First try: Search multiple copyright years.
s {
(?<begin>.*)
Copyright
(?<space1>(\ +
| \ +\(C\)\ +))
(?<first>[12][0-9][0-9][0-9])
(?<middle>.+)
(?<last>[12][0-9][0-9][0-9])
(?<space2>\ +)
by
(?<space3>\ *)
(?<end>.*)
}
{
# Fill line to the same length (if appropriate); we skip the middle
# part but insert `(C)', three spaces, and `-'.
my $space = length($+{space1})
+ length($+{middle})
+ length($+{space2})
+ length($+{space3})
- (length("(C)") + 3 + 1);
print "$+{begin}";
print "Copyright\ (C)\ $+{first}-$year\ by";
print ' ' x $space if length($+{end});
print "$+{end}\n";
$replaced = 1;
}ex
||
# Second try: Search a single copyright year.
s {
(?<begin>.*)
Copyright
(?<space1>(\ +
| \ +\(C\)\ +))
(?<first>[12][0-9][0-9][0-9])
(?<space2>\ +)
by
(?<space3>\ *)
(?<end>.*)
}
{
if ($+{first} < $year)
{
# Fill line to the same length (if appropriate); we insert three
# spaces, the string `(C)', a `-', and the current year.
my $space = length($+{space1})
+ length($+{space2})
+ length($+{space3})
- (length($year) + length("(C)") + 3 + 1);
print "$+{begin}";
print "Copyright\ (C)\ $+{first}-$year\ by";
# If $space is negative this inserts nothing.
print ' ' x $space if length($+{end});
print "$+{end}\n";
$replaced = 1;
}
else
{
# Fill line to the same length (if appropriate); we insert three
# spaces and the string `(C)'.
my $space = length($+{space1})
+ length($+{space2})
+ length($+{space3})
- (length("(C)") + 3);
print "$+{begin}";
print "Copyright\ (C)\ $+{first}\ by";
# If $space is negative this inserts nothing.
print ' ' x $space if length($+{end});
print "$+{end}\n";
$replaced = 1;
}
}ex
||
# Otherwise print line unaltered.
print;
}
else
{
print;
}
}
continue
{
# Reset $replaced before processing the next file.
$replaced = 0 if eof;
}
# EOF