Tag
Hash :
e2f08ee6
Author :
Date :
2007-03-30T23:44:27
double space after USA in the license substitution, since that's how it's usually (?) written.
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
#!/bin/sh
# $Id: srclist-update,v 1.19 2007-03-30 23:44:27 karl Exp $
#
# Check for files in directory $1 being up to date, according to the
# list on stdin. Don't actually make any changes, just show the diffs.
#
# Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
#
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Originally written by Karl Berry.
if test -n "$1"; then
cd "$1" || exit 1
fi
verbose=false
#chicken="echo (would)"
: ${TMPDIR=/tmp}
dsttmp=$TMPDIR/srclist.dst
# Source `dirname $0`/srclistvars.sh first, if it exists.
mydir=`dirname $0`
test -r $mydir/srclistvars.sh && . $mydir/srclistvars.sh
#
# sed command to fix the license to be GPL.
fixlicense='
/^[[:space:]]*#[[:space:]]*Th[ei][ s].* is free software/,/^[[:space:]]*#.*USA\./c\
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
/Th[ei][ s].* is free software/,/\*\//c\
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
'
# sed command to remove lines containing $Id lines.
# Quote the $ so that CVS does not expand it in this script.
remove_id_lines='/[$]Id:.*[$]/d'
# $1 is input file, $2 is output.
# Remove $Id lines, since they'll differ between source locations.
# If $options contains "gpl", change the license to be the standard
# GPL. We use this for libc files, et al.
#
fixfile() \
{
sed_command="$remove_id_lines"
case " $options " in
*' gpl '*)
sed_command="$sed_command; $fixlicense";;
esac
sed "$sed_command" $1 >$2
}
#
cat | while read src dst options; do
#echo "src=$src, dst=$dst, options=$options" >&2
case $src:$dst in
*: ) continue;; # skip lines without second element
'#'* ) continue;; # skip comment-only lines
esac
# Expand variables and make sure we have an input file.
eval src=$src
if test ! -r $src; then
echo "$0: cannot read $src" >&2
continue
fi
# Ignore subdirs in src dir. E.g., if input spec is
# src/subdir/foo.c dst
# then write destination file dst/foo.c.
eval dst=$dst
test -d $dst && dst=$dst/`basename $src`
# Fix files in both src and dst, for the sake
# of a clean comparison.
srctmp=$TMPDIR/`basename $src`
fixfile $src $srctmp
test -r $dst && fixfile $dst $dsttmp
if test ! -e $dst; then
echo "## $srctmp $dst # new"
$chicken cp -p $srctmp $dst
elif cmp -s $srctmp $dsttmp; then
$verbose && echo "## $srctmp $dst # unchanged"
else
echo "## $srctmp $dst # changes"
diff -C 2 $dst $srctmp
fi
done
rm -f $dsttmp