#!/bin/sh
-# $Id: srclist-update,v 1.3 2002-11-25 00:20:03 karl Exp $
-#
+# $Id: srclist-update,v 1.8 2003-07-15 12:47: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.
-#
+#
# Source `dirname $0`/srclistvars.sh first, if it exists.
if test -n "$1"; then
verbose=false
#chicken="echo (would)"
-srctmp=${TMPDIR-/tmp}/srclist.src
-dsttmp=${TMPDIR-/tmp}/srclist.dst
+: ${TMPDIR=/tmp}
+srctmp=$TMPDIR/srclist.src
+dsttmp=$TMPDIR/srclist.dst
mydir=`dirname $0`
test -r $mydir/srclistvars.sh && . $mydir/srclistvars.sh
# \f
# $1 is input, output to stdout with gpl.
-#
+#
fixlicense() \
{
- sed '/The .* is free software/,/USA\. *\*\//c\
+ sed '
+
+ /^\([[: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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ /Th[ei][ s].* is free software/,/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)\
# 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.
-#
+#
fixfile() \
{
- if echo "$options" | grep -w gpl >/dev/null; then
- fixlicense $1
- else
- cat $1
- fi \
- | fgrep -v '$'"Id:" >$2
+ case " $options " in
+ *' gpl '*)
+ fixlicense $1;;
+ *)
+ cat $1;;
+ esac \
+ | grep -v '\$Id: srclist-update,v 1.8 2003-07-15 12:47:27 karl Exp $2
}
# \f
cat | while read src dst options; do
- test -z "$dst" && continue # skip lines without second element
- echo "$src $dst" | sed 's/#.*$//' | egrep '^\s*$' >/dev/null \
- && continue # skip whitespace and comment-only lines
-
- src=`eval echo $src`
+ case $src:$dst in
+ *: ) continue;; # skip lines without second element
+ '#'* ) continue;; # skip comment-only lines
+ esac
+
+ 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
# write destination file dst/foo.c.
- dst=`eval echo $dst`
+ eval dst=$dst
test -d $dst && dst=$dst/`basename $src`
-
+
# Make changes for sake of comparison.
fixfile $src $srctmp
test -r $dst && fixfile $dst $dsttmp
-
+
# don't show license differences.
gplsrc=$TMPDIR/`basename $src`
fixlicense $src >$gplsrc
cmp -s $src $gplsrc && gplsrc=$src
-
+
if test ! -e $dst; then
echo "## $gplsrc $dst # new"
$chicken cp -p $gplsrc $dst
$verbose && echo "## $gplsrc $dst # unchanged"
else
echo "## $gplsrc $dst # changes"
- diff -c2 $dst $gplsrc
+ diff -C 2 $dst $gplsrc
fi
done