File: update-copyright

package info (click to toggle)
lyskom-server 2.1.2-18.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 10,740 kB
  • sloc: ansic: 51,006; exp: 12,368; sh: 10,501; python: 2,927; makefile: 1,024; yacc: 466; awk: 340; lisp: 271; lex: 218; sed: 50
file content (70 lines) | stat: -rwxr-xr-x 2,333 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/bash
# $Id: update-copyright,v 1.9 2003/08/23 13:39:59 ceder Exp $
# Copyright (C) 1994-1996, 1999, 2003  Lysator Academic Computer Association.
#
# 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 2, 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, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# Please report bugs at http://bugzilla.lysator.liu.se/.

# This file updates the copyright lines found in the programs, making
# sure that every year that the file is edited appears in the
# copyright line.

while read file
do
    if grep '[C]opyright' $file > /tmp/$$.yc ; then : ; 
    else echo "$file:1: no Copy"right" line found" >&2 ; continue;
    fi
    tr , '\012' < /tmp/$$.yc \
	| sed -n \
	   -e 's/.*\([12][0-9][0-9][0-9]\)-\([12][0-9][0-9][0-9]\).*/\1 \2/p' \
	   -e 's/.*\([12][0-9][0-9][0-9]\).*/\1/p' \
	| awk 'NF == 2 { for(i=$1; i<=$2; ++i) print i } NF == 1' \
	> /tmp/$$.year
    if cvs log $file > /tmp/$$.yc ; then : ;
    else echo "$file:1: cvs log failed" >&2 ; continue;
    fi
    cat /tmp/$$.yc \
	| sed -n 's/^date: \([0-9][0-9][0-9][0-9]\).*author.*state.*$/\1/p' \
	| sort | uniq >> /tmp/$$.year
    y=`sort /tmp/$$.year \
	| uniq \
	| (read first ; echo -n $first; next=\`expr $first + 1\`; rest=; \
	   while read second; \
	   do \
		if [ $second = $next ]; \
		then \
		    rest="-$next"; \
		else \
		    echo -n $rest, $second; \
		    rest=; \
		fi; \
		next=\`expr $second + 1\`; \
	   done; \
	   echo -n $rest)`
    sed 's/\([C]opyright[^0-9]*\)[---0-9 ,]*[0-9]\([^0-9]*\)/\1'"$y"'\2/' \
	< $file > /tmp/$$.file
    cmp /tmp/$$.file $file >/dev/null
    if [ $? = 1 ]; then
	if [ -x $file ]; then
	    cat /tmp/$$.file > $file;
	    chmod +x $file
	else
	    cat /tmp/$$.file > $file;
	fi
	echo $file updated
    fi
    rm /tmp/$$.file /tmp/$$.yc /tmp/$$.year
done