1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
#
# divert_link <prefix> <suffix>
#
# Ensures that the file <prefix><suffix> is properly diverted to
# <prefix>.divert-orig<suffix> by this package, and becomes a
# symbolic link to either <prefix>.divert<suffix> (default) or
# <prefix>.divert-orig<suffix>.
#
# undivert_unlink <prefix> <suffix>
#
# Undoes the action of divert_link <prefix> <suffix> specified
# above.
#
# Version: 4.0
#
package=#PACKAGE#
ours=#DEB_DIVERT_EXTENSION#
theirs=#DEB_DIVERT_EXTENSION#-orig
divert_link_divert()
{
file=$1
ourfile=$2
theirfile=$3
if ! 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" ] || \
[ "$(readlink "$file")" != "$(basename "$ourfile")" -a \
"$(readlink "$file")" != "$(basename "$theirfile")" ]; then
echo "*** OMINOUS WARNING ***: $file is not linked to either $(basename "$ourfile") or $(basename "$theirfile")" >&2
fi
}
divert_link()
{
prefix=$1
suffix=$2
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
echo "*** OMINOUS WARNING ***: $file is not linked to either $(basename "$ourfile") or $(basename "$theirfile")" >&2
else
rm -f "$file"
fi
}
undivert_unlink_divert()
{
file="$1"
if [ ! -L "$file" ] && [ ! -e "$file" ]; then
dpkg-divert --remove --rename --package "$package" "$file"
else
echo "Not removing diversion of $file by $package" >&2
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"
}
|