#!/bin/sh # $Id: srclist-update,v 1.5 2002-11-26 22:58:57 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 cd "$1" || exit 1 fi verbose=false #chicken="echo (would)" : ${TMPDIR=/tmp} srctmp=$TMPDIR/srclist.src dsttmp=$TMPDIR/srclist.dst mydir=`dirname $0` test -r $mydir/srclistvars.sh && . $mydir/srclistvars.sh # # $1 is input, output to stdout with gpl. # fixlicense() \ { sed '/The .* 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)\ 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. */ ' $1 } # $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. # fixfile() \ { if echo "$options" | grep -w gpl >/dev/null; then fixlicense $1 else cat $1 fi \ | fgrep -v '$'"Id:" >$2 } # 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` 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` 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 elif cmp -s $srctmp $dsttmp; then $verbose && echo "## $gplsrc $dst # unchanged" else echo "## $gplsrc $dst # changes" diff -c2 $dst $gplsrc fi done rm -f $srctmp $dsttmp