| OLD | NEW |
| (Empty) |
| 1 #!/bin/sh | |
| 2 # Automatically update copyright for GDB, the GNU debugger. | |
| 3 # | |
| 4 # Copyright (C) 2007-2012 Free Software Foundation, Inc. | |
| 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 | |
| 10 # the Free Software Foundation; either version 3 of the License, or | |
| 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 | |
| 19 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 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 | |
| 47 # So these need to be done either by hand, as needed, or by the copyright.py | |
| 48 # script. | |
| 49 byhand=" | |
| 50 *.s | |
| 51 *.f | |
| 52 *.f90 | |
| 53 *.igen | |
| 54 *.ac | |
| 55 *.texi | |
| 56 *.texinfo | |
| 57 *.tex | |
| 58 *.defs | |
| 59 *.1 | |
| 60 *.ads | |
| 61 *.adb | |
| 62 *.gpr | |
| 63 *.inc | |
| 64 " | |
| 65 | |
| 66 # Files which should not be modified, either because they are | |
| 67 # generated, non-FSF, or otherwise special (e.g. license text, | |
| 68 # or test cases which must be sensitive to line numbering). | |
| 69 prunes=" | |
| 70 COPYING | |
| 71 COPYING.LIB | |
| 72 CVS | |
| 73 configure | |
| 74 copying.c | |
| 75 gdbarch.c | |
| 76 gdbarch.h | |
| 77 fdl.texi | |
| 78 gpl.texi | |
| 79 gdbtk | |
| 80 gdb.gdbtk | |
| 81 osf-share | |
| 82 aclocal.m4 | |
| 83 step-line.inp | |
| 84 step-line.c | |
| 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. | |
| 95 set -f | |
| 96 | |
| 97 version=`$EMACS --version | sed 's/GNU Emacs \([0-9]*\)\..*/\1/; 1q'` | |
| 98 if test "$version" -lt 22; then | |
| 99 echo "error: $EMACS is too old; use at least an Emacs 22.0.XX snapshot." >&2 | |
| 100 exit 1 | |
| 101 fi | |
| 102 | |
| 103 if test $# -lt 1; then | |
| 104 dir=. | |
| 105 else | |
| 106 dir=$1 | |
| 107 fi | |
| 108 | |
| 109 if ! test -f doc/gdbint.texinfo; then | |
| 110 echo "\"$dir\" is not a GDB source directory." | |
| 111 exit 1 | |
| 112 fi | |
| 113 | |
| 114 cat > 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 | |
| 144 EOF | |
| 145 | |
| 146 for f in $prunes $byhand; do | |
| 147 prune_opts="$prune_opts -name $f -prune -o" | |
| 148 done | |
| 149 | |
| 150 for 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)) | |
| 159 EOF | |
| 160 done | |
| 161 | |
| 162 cat >> copytmp.el <<EOF | |
| 163 (delete-file "copytmp.el") | |
| 164 ;; Comment out the next line to examine the message buffer. | |
| 165 (kill-emacs) | |
| 166 EOF | |
| 167 | |
| 168 $EMACS --no-site-file -q -l ./copytmp.el | |
| 169 | |
| 170 python $dir/copyright.py | |
| OLD | NEW |