blob: 74717658a4139b295f30c91d5364ccbb008500fb (
plain)
- #!/bin/sh
- set -e
- targetdir=/tmp/localtweaks
- origfiles="`cd /etc && find . -name '*.orig'`"
- oldfiles="`cd /etc && find . -name '*.old'`"
- includes=""
- excludes=""
- if [ -d /etc/local ]; then
- if [ -r /etc/local/localtweaks.include ]; then
- includes="`cat /etc/local/localtweaks.include`"
- fi
- if [ -r /etc/local/localtweaks.exclude ]; then
- excludes="`cat /etc/local/localtweaks.exclude`"
- fi
- fi
- files="$origfiles $oldfiles $includes"
- # process all *.{orig,old} once each
- for file in `for x in $files; do echo $x; done | uniq | sort`; do
- olddir="/etc/`dirname $file`"
- newdir="$targetdir/`dirname $file`"
- oldname="`basename $file`"
- newname="`basename $file .orig`"
- for exclude in $excludes; do
- [ "$newname" = "$exclude" ] && continue 2
- done
- if [ ! -e $olddir/$newname.orig ]; then
- newname="`basename $file .old`"
- fi
- if [ "$oldname" = "$newname" ]; then
- echo "FATAL: file is neither .orig nor .old: \"$file\"!"
- exit 1
- fi
- if [ ! -e $olddir/$oldname ]; then
- echo "FATAL: file found disappeared again: \"$file\"!"
- exit 1
- fi
- mkdir -p $newdir
- cp -af $olddir/$newname $newdir
- # Only diff against non-empty files.
- if [ -s $olddir/$oldname ]; then
- diff -ruN $olddir/$oldname $olddir/$newname > $newdir/$newname.diff
- chown --reference=$olddir/$newname $newdir/$newname.diff
- chmod --reference=$olddir/$newname $newdir/$newname.diff
- chmod a-x $newdir/$newname.diff
- fi
- done
|