1 eval '(exit $?0)' && eval 'exec perl -wS -i "$0" ${1+"$@"}' 2 & eval 'exec perl -wS -i "$0" $argv:q' 3 if 0; 4 5 # Copyright 2015-2018 by 6 # Werner Lemberg. 7 # 8 # This file is part of the FreeType project, and may only be used, modified, 9 # and distributed under the terms of the FreeType project license, 10 # LICENSE.TXT. By continuing to use, modify, or distribute this file you 11 # indicate that you have read the license and understand and accept it 12 # fully. 13 14 # [Note: This script is expected to be called by the shell, which in turn 15 # calls perl automatically. The nifty start-up code above is based on 16 # gnulib's `update-copyright' script; it is a more portable replacement for 17 # the shebang, using the first `perl' program in the shell's path instead.] 18 19 # Usage: 20 # 21 # update-copyright-year file1 [file2 ...] 22 23 24 # This script handles copyright entries like 25 # 26 # Copyright 2000 by 27 # foobar 28 # 29 # or 30 # 31 # /* Copyright 2000, 2001, 2004-2007 by */ 32 # /* foobar */ 33 # 34 # and replaces them uniformly with 35 # 36 # Copyright 2000-2015 37 # foobar 38 # 39 # and 40 # 41 # /* Copyright 2000-2015 by */ 42 # /* foobar */ 43 # 44 # (assuming that the current year is 2015). As can be seen, the line length 45 # is retained if there is non-whitespace after the word `by' on the same 46 # line. 47 48 use strict; 49 50 51 my (undef, undef, undef, 52 undef, undef, $year, 53 undef, undef, undef) = localtime(time); 54 $year += 1900; 55 56 my $replaced = 0; 57 58 59 # Loop over all input files; option `-i' (issued at the very beginning of 60 # this script) makes perl edit them in-place. 61 while (<>) 62 { 63 # Only handle the first copyright notice in a file. 64 if (!$replaced) 65 { 66 # First try: Search multiple copyright years. 67 s { 68 (?<begin>.*) 69 Copyright 70 (?<space1>\ +) 71 (?<first>[12][0-9][0-9][0-9]) 72 (?<middle>.+) 73 (?<last>[12][0-9][0-9][0-9]) 74 (?<space2>\ +) 75 by 76 (?<space3>\ *) 77 (?<end>.*) 78 } 79 { 80 # Fill line to the same length (if appropriate); we skip the middle 81 # part but insert two spaces and `-'. 82 my $space = length($+{space1}) - 1 83 + length($+{middle}) - 1 84 + length($+{space2}) - 1 85 + length($+{space3}); 86 87 print "$+{begin}"; 88 print "Copyright\ $+{first}-$year\ by"; 89 print ' ' x $space if length($+{end}); 90 print "$+{end}\n"; 91 $replaced = 1; 92 }ex 93 || 94 # Second try: Search a single copyright year. 95 s { 96 (?<begin>.*) 97 Copyright 98 (?<space1>\ +) 99 (?<first>[12][0-9][0-9][0-9]) 100 (?<space2>\ +) 101 by 102 (?<space3>\ *) 103 (?<end>.*) 104 } 105 { 106 # Fill line to the same length (if appropriate); we insert two 107 # spaces, a `-', and the current year. 108 my $space = length($+{space1}) - 1 109 + length($+{space2}) - 1 110 + length($+{space3}) 111 - (length($year) + 1); 112 113 print "$+{begin}"; 114 print "Copyright $+{first}-$year by"; 115 # If $space is negative this inserts nothing. 116 print ' ' x $space if length($+{end}); 117 print "$+{end}\n"; 118 $replaced = 1; 119 }ex 120 || 121 # Otherwise print line unaltered. 122 print; 123 } 124 else 125 { 126 print; 127 } 128 } 129 continue 130 { 131 # Reset $replaced before processing the next file. 132 $replaced = 0 if eof; 133 } 134 135 # EOF 136