2011-02-21 Hui Zhu <teawater@gmail.com>
[deliverable/binutils-gdb.git] / gdb / copyright.sh
CommitLineData
4de1f557
DJ
1#!/bin/sh
2# Automatically update copyright for GDB, the GNU debugger.
3#
7b6bb8da 4# Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
4de1f557
DJ
5#
6# This file is part of GDB.
7#
8# This program is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
50efebf8 10# the Free Software Foundation; either version 3 of the License, or
4de1f557
DJ
11# (at your option) any later version.
12#
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17#
18# You should have received a copy of the GNU General Public License
50efebf8 19# along with this program. If not, see <http://www.gnu.org/licenses/>.
4de1f557
DJ
20
21# Usage: cd src/gdb && sh ./copyright.sh
22# To use a different version of emacs, set the EMACS environment
23# variable before running.
24
25# After running, update those files mentioned in $byhand by hand.
26# Always review the output of this script before committing it!
27# A useful command to review the output is:
28# filterdiff -x \*.c -x \*.cc -x \*.h -x \*.exp updates.diff
29# This removes the bulk of the changes which are most likely
30# to be correct.
31
32####
33# Configuration
34####
35
36# As of Emacs 22.0 (snapshot), wrapping and copyright updating do not
37# handle these file types - all reasonable:
38# Assembly (weird comment characters, e.g. "!"); .S usually has C
39# comments, which are fine)
40# Fortran ("c" comment character)
41# igen
42# Autoconf input (dnl)
43# texinfo (@c)
44# tex (%)
45# *.defs as C
46# man
e9bdf92c
JB
47# So these need to be done either by hand, as needed, or by the copyright.py
48# script.
4de1f557
DJ
49byhand="
50*.s
51*.f
52*.f90
53*.igen
54*.ac
55*.texi
56*.texinfo
57*.tex
58*.defs
59*.1
e9bdf92c
JB
60*.ads
61*.adb
62*.gpr
63*.inc
4de1f557
DJ
64"
65
66# Files which should not be modified, either because they are
85bb0718
DJ
67# generated, non-FSF, or otherwise special (e.g. license text,
68# or test cases which must be sensitive to line numbering).
4de1f557
DJ
69prunes="
70COPYING
71COPYING.LIB
72CVS
73configure
74copying.c
75gdbarch.c
76gdbarch.h
77fdl.texi
78gpl.texi
79gdbtk
80gdb.gdbtk
81osf-share
82aclocal.m4
85bb0718
DJ
83step-line.inp
84step-line.c
4de1f557
DJ
85"
86
87####
88# Main program
89####
90
91: ${EMACS:=emacs}
92
93# Disable filename expansion, so that we can get at the glob patterns
94# from $byhand.
95set -f
96
97version=`$EMACS --version | sed 's/GNU Emacs \([0-9]*\)\..*/\1/; 1q'`
98if test "$version" -lt 22; then
3e9cb5f4 99 echo "error: $EMACS is too old; use at least an Emacs 22.0.XX snapshot." >&2
4de1f557
DJ
100 exit 1
101fi
102
103if test $# -lt 1; then
104 dir=.
105else
106 dir=$1
107fi
108
109if ! test -f doc/gdbint.texinfo; then
110 echo "\"$dir\" is not a GDB source directory."
111 exit 1
112fi
113
114cat > copytmp.el <<EOF
115(load "copyright")
116(setq vc-cvs-stay-local nil
117 message-log-max t)
118(setq fsf-regexp "Free[#; \t\n]+Software[#; \t\n]+Foundation,[#; \t\n]+Inc\."
119 fsf-copyright-regexp (concat copyright-regexp "[#; \t\n]+" fsf-regexp)
120 generated-regexp "THIS FILE IS MACHINE GENERATED WITH CGEN")
121
122(defun gdb-copyright-update (filename)
123 (widen)
124 (goto-char (point-min))
125 (if (and (not (re-search-forward generated-regexp (+ (point) copyright-limit) t))
126 (re-search-forward fsf-copyright-regexp (+ (point) copyright-limit) t))
127 (progn
128 (setq copyright-update t
129 copyright-query nil
130 fill-column 78
131 start (copy-marker (match-beginning 0))
132 end (progn
133 (re-search-backward fsf-regexp)
134 (re-search-forward fsf-regexp
135 (+ (point) copyright-limit) t)
136 (point-marker))
137 fsf-start (copy-marker (match-beginning 0)))
138 (replace-match "Free_Software_Foundation,_Inc." t t)
139 (copyright-update)
140 (fill-region-as-paragraph start end)
141 (replace-string "_" " " nil fsf-start end))
142 (message (concat "WARNING: No copyright message found in " filename))))
143
144EOF
145
146for f in $prunes $byhand; do
147 prune_opts="$prune_opts -name $f -prune -o"
148done
149
150for f in $(find "$dir" "$dir/../include/gdb" "$dir/../sim" \
151 $prune_opts -type f -print); do
152 cat >> copytmp.el <<EOF
153(switch-to-buffer (find-file "$f"))
154(setq backup-inhibited t)
155(setq write-file-hooks '())
156(gdb-copyright-update "$f")
157(save-buffer)
158(kill-buffer (buffer-name))
159EOF
160done
161
162cat >> copytmp.el <<EOF
163(delete-file "copytmp.el")
164;; Comment out the next line to examine the message buffer.
165(kill-emacs)
166EOF
167
e9bdf92c
JB
168$EMACS --no-site-file -q -l ./copytmp.el
169
170python $dir/copyright.py
This page took 0.302393 seconds and 4 git commands to generate.