update from automake 1.6
[gnulib.git] / config / srclist-update
1 #!/bin/sh
2 # $Id: srclist-update,v 1.2 2002-09-25 14:18:57 karl Exp $
3
4 # Check for files being up to date, according to the list on stdin.
5
6 # Source $mydir/srclistvars.sh first, if it exists, where
7 # $mydir=`dirname $0`.
8
9 if test -n "$1"; then
10   cd "$1" || exit 1
11 fi
12
13 verbose=false
14 #chicken="echo (would)"
15
16 srctmp=${TMPDIR-/tmp}/srclist.src
17 dsttmp=${TMPDIR-/tmp}/srclist.dst
18
19 mydir=`dirname $0`
20 test -r $mydir/srclistvars.sh && . $mydir/srclistvars.sh
21
22 cat | while read src dst; do
23   test -z "$dst" && continue  # skip lines without second element
24   echo "$src $dst" | sed 's/#.*$//' | egrep '^\s*$' >/dev/null \
25   && continue  # skip whitespace and comment-only lines
26   
27   src=`eval echo $src`
28   if test ! -r $src; then
29     echo "$0: cannot read $src" >&2
30     continue
31   fi
32   
33   # If given src/foo.c dst, copy to dst/foo.c.
34   dst=`eval echo $dst`
35   test -d $dst && dst=$dst/`basename $src`
36   
37   # $ Id: lines will differ.
38   fgrep -v '$'"Id:" $src >$srctmp
39   test -r $dst && fgrep -v '$'"Id:" $dst >$dsttmp
40
41   if test ! -e $dst; then
42     echo "## $src $dst  # new"
43     $chicken cp -p $src $dst
44   elif cmp -s $srctmp $dsttmp; then
45     $verbose && echo "## $src $dst  # unchanged"
46   else
47     echo "## $src $dst  # changes"
48     diff -c2 $dst $src
49   fi
50 done
51
52 rm -f $srctmp $dsttmp