summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2004-08-05 17:38:14 +0000
committerJonas Smedegaard <dr@jones.dk>2004-08-05 17:38:14 +0000
commit890f2daa3ce1482427514f0b29bc4fd66a66cde4 (patch)
tree0ce21dc099303997bf0ad8175b2f4cc0f08dc77c
parent47b9a67e15cf3115bff7aec63d0bebe62f0cf83c (diff)
Avoid tsort. Support exclude and include files. Fail on error.
-rwxr-xr-xsavelocaltweaks21
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