X-Git-Url: http://andersk.mit.edu/gitweb/config-package-dev.git/blobdiff_plain/ab8e2a67ce47fada2ae30371f954ab9dd570245c..dd49a2d50d0a03e9159ac4ac6f35fbfed8ed70b1:/divert.sh.in diff --git a/divert.sh.in b/divert.sh.in index 47f006c..2c3f161 100644 --- a/divert.sh.in +++ b/divert.sh.in @@ -11,7 +11,7 @@ # Undoes the action of divert_link specified # above. # -# Version: 3.4 +# Version: 4.0 # package=#PACKAGE# @@ -19,19 +19,22 @@ package=#PACKAGE# ours=#DEB_DIVERT_EXTENSION# theirs=#DEB_DIVERT_EXTENSION#-orig -divert_link() +divert_link_divert() { - prefix=$1 - suffix=$2 - - file=$prefix$suffix - ourfile=$prefix$ours$suffix - theirfile=$prefix$theirs$suffix - - if ! dpkg-divert --list "$package" | \ + file=$1 + ourfile=$2 + theirfile=$3 + if ! LC_ALL=C dpkg-divert --list "$package" | \ grep -xFq "diversion of $file to $theirfile by $package"; then dpkg-divert --divert "$theirfile" --rename --package "$package" --add "$file" fi +} + +divert_link_symlink() +{ + file=$1 + ourfile=$2 + theirfile=$3 if [ ! -L "$file" ] && [ ! -e "$file" ]; then ln -s "$(basename "$ourfile")" "$file" elif [ ! -L "$file" ] || \ @@ -41,7 +44,7 @@ divert_link() fi } -undivert_unlink() +divert_link() { prefix=$1 suffix=$2 @@ -49,7 +52,23 @@ undivert_unlink() file=$prefix$suffix ourfile=$prefix$ours$suffix theirfile=$prefix$theirs$suffix + divert_link_divert "$file" "$ourfile" "$theirfile" + divert_link_symlink "$file" "$ourfile" "$theirfile" +} + +divert_remove() +{ + file=$1 + ourfile="" + theirfile=$2 + divert_link_divert "$file" "$ourfile" "$theirfile" +} +undivert_unlink_symlink() +{ + file="$1" + ourfile="$2" + theirfile="$3" if [ ! -L "$file" ] || \ [ "$(readlink "$file")" != "$(basename "$ourfile")" -a \ "$(readlink "$file")" != "$(basename "$theirfile")" ]; then @@ -57,6 +76,11 @@ undivert_unlink() else rm -f "$file" fi +} + +undivert_unlink_divert() +{ + file="$1" if [ ! -L "$file" ] && [ ! -e "$file" ]; then dpkg-divert --remove --rename --package "$package" "$file" else @@ -64,3 +88,46 @@ undivert_unlink() fi } +undivert_unlink() +{ + prefix=$1 + suffix=$2 + + file=$prefix$suffix + ourfile=$prefix$ours$suffix + theirfile=$prefix$theirs$suffix + + undivert_unlink_symlink "$file" "$ourfile" "$theirfile" + undivert_unlink_divert "$file" "$package" +} + +undivert_unremove() +{ + file=$1 + undivert_unlink_divert "$file" +} + +check_undivert_unlink() +{ + prefix=$1 + suffix=$2 + + file=$prefix$suffix + ourfile=$prefix$ours$suffix + theirfile=$prefix$theirs$suffix + + if LC_ALL=C dpkg-divert --list "$package" | \ + grep -xFq "diversion of $file to $theirfile by $package"; then + undivert_unlink "$prefix" "$suffix" + fi +} + +check_undivert_unremove() +{ + file=$1 + removedfile=$2 + if LC_ALL=C dpkg-divert --list "$package" | \ + grep -xFq "diversion of $file to $removedfile by $package"; then + undivert_unremove "$file" + fi +}