blob: 7f2c84dfa2ffecc184f1cbd0171cc42542daaf67 (
plain)
- #!/bin/sh
- #set -e
- basedir="/etc"
- targetdir="/tmp/localtweaks"
- for ext in .orig .old; do
- extfiles="`find $basedir -name \*$ext`"
- for extfile in $extfiles; do
- xextfile="${extfile%$ext}"
- files="$files ${xextfile#$basedir}"
- done
- done
- includes=""
- excludes=""
- if [ -d /etc/local ]; then
- if [ -r /etc/local/localtweaks.include ]; then
- includes="`cat /etc/local/localtweaks.include`"
- for include in $includes; do
- files="$files ${include#$basedir}"
- done
- fi
- if [ -r /etc/local/localtweaks.exclude ]; then
- xexcludes="`cat /etc/local/localtweaks.exclude`"
- for exclude in $xexcludes; do
- excludes="$excludes ${exclude#$basedir}"
- done
- fi
- fi
- # process all files once each
- for file in `for x in $files; do echo $x; done | uniq | sort`; do
- for exclude in $excludes; do
- [ "$file" = "$exclude" ] && continue 2
- done
- if [ -e $basedir/${file}.orig ]; then
- ext=".orig"
- elif [ -e $basedir/${file}.old ]; then
- ext=".old"
- else
- ext=""
- fi
- newdir="$targetdir/$basedir/`dirname $file`"
- mkdir -p $newdir
- cp -af $basedir/$file $newdir
- # Only diff against existing and non-empty files.
- if [ -n "$ext" ] && [ -s $basedir/$file$ext ]; then
- diff -ruN $basedir/$file$ext $basedir/$file > $targetdir/$basedir/$file.diff
- chown --reference=$basedir/$file $targetdir/$basedir/$file.diff
- chmod --reference=$basedir/$file $targetdir/$basedir/$file.diff
- chmod a-x $targetdir/$basedir/$file.diff
- fi
- done
|