diff options
Diffstat (limited to 'gdb/copyright.sh')
-rw-r--r-- | gdb/copyright.sh | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/gdb/copyright.sh b/gdb/copyright.sh new file mode 100644 index 00000000000..23f63363d20 --- /dev/null +++ b/gdb/copyright.sh @@ -0,0 +1,162 @@ +#!/bin/sh +# Automatically update copyright for GDB, the GNU debugger. +# +# Copyright (C) 2007 Free Software Foundation, Inc. +# +# This file is part of GDB. +# +# 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 of the License, 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., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +# Usage: cd src/gdb && sh ./copyright.sh +# To use a different version of emacs, set the EMACS environment +# variable before running. + +# After running, update those files mentioned in $byhand by hand. +# Always review the output of this script before committing it! +# A useful command to review the output is: +# filterdiff -x \*.c -x \*.cc -x \*.h -x \*.exp updates.diff +# This removes the bulk of the changes which are most likely +# to be correct. + +#### +# Configuration +#### + +# As of Emacs 22.0 (snapshot), wrapping and copyright updating do not +# handle these file types - all reasonable: +# Assembly (weird comment characters, e.g. "!"); .S usually has C +# comments, which are fine) +# Fortran ("c" comment character) +# igen +# Autoconf input (dnl) +# texinfo (@c) +# tex (%) +# *.defs as C +# man +# So these need to be done by hand, as needed +byhand=" +*.s +*.f +*.f90 +*.igen +*.ac +*.texi +*.texinfo +*.tex +*.defs +*.1 +" + +# Files which should not be modified, either because they are +# generated, non-FSF, or otherwise special (e.g. license text). +prunes=" +COPYING +COPYING.LIB +CVS +configure +copying.c +gdbarch.c +gdbarch.h +fdl.texi +gpl.texi +gdbtk +gdb.gdbtk +osf-share +aclocal.m4 +" + +#### +# Main program +#### + +: ${EMACS:=emacs} + +# Disable filename expansion, so that we can get at the glob patterns +# from $byhand. +set -f + +version=`$EMACS --version | sed 's/GNU Emacs \([0-9]*\)\..*/\1/; 1q'` +if test "$version" -lt 22; then + echo "error: $EMACS is too old; use at least an Emacs 22 snapshot." >&2 + exit 1 +fi + +if test $# -lt 1; then + dir=. +else + dir=$1 +fi + +if ! test -f doc/gdbint.texinfo; then + echo "\"$dir\" is not a GDB source directory." + exit 1 +fi + +cat > copytmp.el <<EOF +(load "copyright") +(setq vc-cvs-stay-local nil + message-log-max t) +(setq fsf-regexp "Free[#; \t\n]+Software[#; \t\n]+Foundation,[#; \t\n]+Inc\." + fsf-copyright-regexp (concat copyright-regexp "[#; \t\n]+" fsf-regexp) + generated-regexp "THIS FILE IS MACHINE GENERATED WITH CGEN") + +(defun gdb-copyright-update (filename) + (widen) + (goto-char (point-min)) + (if (and (not (re-search-forward generated-regexp (+ (point) copyright-limit) t)) + (re-search-forward fsf-copyright-regexp (+ (point) copyright-limit) t)) + (progn + (setq copyright-update t + copyright-query nil + fill-column 78 + start (copy-marker (match-beginning 0)) + end (progn + (re-search-backward fsf-regexp) + (re-search-forward fsf-regexp + (+ (point) copyright-limit) t) + (point-marker)) + fsf-start (copy-marker (match-beginning 0))) + (replace-match "Free_Software_Foundation,_Inc." t t) + (copyright-update) + (fill-region-as-paragraph start end) + (replace-string "_" " " nil fsf-start end)) + (message (concat "WARNING: No copyright message found in " filename)))) + +EOF + +for f in $prunes $byhand; do + prune_opts="$prune_opts -name $f -prune -o" +done + +for f in $(find "$dir" "$dir/../include/gdb" "$dir/../sim" \ + $prune_opts -type f -print); do + cat >> copytmp.el <<EOF +(switch-to-buffer (find-file "$f")) +(setq backup-inhibited t) +(setq write-file-hooks '()) +(gdb-copyright-update "$f") +(save-buffer) +(kill-buffer (buffer-name)) +EOF +done + +cat >> copytmp.el <<EOF +(delete-file "copytmp.el") +;; Comment out the next line to examine the message buffer. +(kill-emacs) +EOF + +exec $EMACS --no-site-file -q -l ./copytmp.el |