Mercurial > hg > octave-shane > gnulib-hg
changeset 17262:aa1920a5636c
update-copyright: avoid copyright notice date corruption
Given a sequence of copyright year numbers in which the final
one was a two-digit number that happened to be a substring of
a preceding four-digit year number, we would mistakenly update
the substring (from two- to four-digit) rather than the two-digit
number at the end, which, combined with the addition of the current
4-digit year number would yield two 5-digit year numbers, e.g.,
here, it would convert the first "99" to "1999, 2013" rather than
the final one:
1991, 99
11999, 20131, 1999
* build-aux/update-copyright: Tighten a regexp.
* tests/test-update-copyright.sh: Add a test case to trigger the bug.
Reported by Joseph Myers in
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/32281
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Thu, 03 Jan 2013 10:23:30 +0100 |
parents | 28b073aabf32 |
children | 283c189edcab |
files | ChangeLog build-aux/update-copyright tests/test-update-copyright.sh |
diffstat | 3 files changed, 26 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2013-01-03 Jim Meyering <jim@meyering.net> + + update-copyright: avoid copyright notice date corruption + Given a sequence of copyright year numbers in which the final + one was a two-digit number that happened to be a substring of + a preceding four-digit year number, we would mistakenly update + the substring (from two- to four-digit) rather than the two-digit + number at the end, which, combined with the addition of the current + 4-digit year number would yield two 5-digit year numbers, e.g., + here, it would convert the first "99" to "1999, 2013" rather than + the final one: + 1991, 99 + 11999, 20131, 1999 + * build-aux/update-copyright: Tighten a regexp. + * tests/test-update-copyright.sh: Add a test case to trigger the bug. + Reported by Joseph Myers in + http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/32281 + 2013-01-01 Paul Eggert <eggert@cs.ucla.edu> regex: omit needless signed-pointer casts
--- a/build-aux/update-copyright +++ b/build-aux/update-copyright @@ -3,7 +3,7 @@ if 0; # Update an FSF copyright year list to include the current year. -my $VERSION = '2012-02-05.21:39'; # UTC +my $VERSION = '2013-01-03.09:41'; # UTC # Copyright (C) 2009-2013 Free Software Foundation, Inc. # @@ -192,7 +192,7 @@ if ($final_year != $this_year) { # Update the year. - $stmt =~ s/$final_year_orig/$final_year, $this_year/; + $stmt =~ s/\b$final_year_orig\b/$final_year, $this_year/; } if ($final_year != $this_year || $ENV{'UPDATE_COPYRIGHT_FORCE'}) {
--- a/tests/test-update-copyright.sh +++ b/tests/test-update-copyright.sh @@ -505,6 +505,9 @@ /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc. *** * End of comments. */ EOF +cat > $TMP.two-digit-final-is-substr-of-first <<EOF + /* Copyright 1991, 99 Free Software Foundation, Inc. */ +EOF UPDATE_COPYRIGHT_YEAR=2010 \ update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr compare /dev/null $TMP-stdout || exit 1 @@ -536,6 +539,9 @@ Inc. *** * End of comments. */ EOF +compare - $TMP.two-digit-final-is-substr-of-first <<EOF || exit 1 + /* Copyright 1991, 1999, 2010 Free Software Foundation, Inc. */ +EOF rm $TMP* exit 0