diff options
author | Jonas Smedegaard <dr@jones.dk> | 2004-08-05 17:38:14 +0000 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2004-08-05 17:38:14 +0000 |
commit | 890f2daa3ce1482427514f0b29bc4fd66a66cde4 (patch) | |
tree | 0ce21dc099303997bf0ad8175b2f4cc0f08dc77c | |
parent | 47b9a67e15cf3115bff7aec63d0bebe62f0cf83c (diff) |
Avoid tsort. Support exclude and include files. Fail on error.
-rwxr-xr-x | savelocaltweaks | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/savelocaltweaks b/savelocaltweaks index 41caaef..7471765 100755 --- a/savelocaltweaks +++ b/savelocaltweaks @@ -1,18 +1,33 @@ #!/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 -# merge all to only process once when both .orig and .old exist -files="`echo $origfiles $oldfiles | tsort`" +files="$origfiles $oldfiles $includes" -for file in $files; do +# 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 |