]> andersk Git - config-package-dev.git/blame - divert.sh.in
Set LC_ALL=C when matching potentially localized dpkg output
[config-package-dev.git] / divert.sh.in
CommitLineData
ab8e2a67
TA
1#
2# divert_link <prefix> <suffix>
3#
4# Ensures that the file <prefix><suffix> is properly diverted to
5# <prefix>.divert-orig<suffix> by this package, and becomes a
6# symbolic link to either <prefix>.divert<suffix> (default) or
7# <prefix>.divert-orig<suffix>.
8#
9# undivert_unlink <prefix> <suffix>
10#
11# Undoes the action of divert_link <prefix> <suffix> specified
12# above.
13#
936cb21e 14# Version: 4.0
ab8e2a67
TA
15#
16
17package=#PACKAGE#
18
19ours=#DEB_DIVERT_EXTENSION#
20theirs=#DEB_DIVERT_EXTENSION#-orig
21
936cb21e 22divert_link_divert()
ab8e2a67 23{
936cb21e
TA
24 file=$1
25 ourfile=$2
26 theirfile=$3
dd49a2d5 27 if ! LC_ALL=C dpkg-divert --list "$package" | \
ab8e2a67
TA
28 grep -xFq "diversion of $file to $theirfile by $package"; then
29 dpkg-divert --divert "$theirfile" --rename --package "$package" --add "$file"
30 fi
936cb21e
TA
31}
32
33divert_link_symlink()
34{
35 file=$1
36 ourfile=$2
37 theirfile=$3
ab8e2a67
TA
38 if [ ! -L "$file" ] && [ ! -e "$file" ]; then
39 ln -s "$(basename "$ourfile")" "$file"
40 elif [ ! -L "$file" ] || \
41 [ "$(readlink "$file")" != "$(basename "$ourfile")" -a \
42 "$(readlink "$file")" != "$(basename "$theirfile")" ]; then
43 echo "*** OMINOUS WARNING ***: $file is not linked to either $(basename "$ourfile") or $(basename "$theirfile")" >&2
44 fi
45}
46
936cb21e 47divert_link()
ab8e2a67
TA
48{
49 prefix=$1
50 suffix=$2
51
52 file=$prefix$suffix
53 ourfile=$prefix$ours$suffix
54 theirfile=$prefix$theirs$suffix
936cb21e
TA
55 divert_link_divert "$file" "$ourfile" "$theirfile"
56 divert_link_symlink "$file" "$ourfile" "$theirfile"
57}
ab8e2a67 58
936cb21e
TA
59divert_remove()
60{
61 file=$1
62 ourfile=""
63 theirfile=$2
64 divert_link_divert "$file" "$ourfile" "$theirfile"
65}
66
67undivert_unlink_symlink()
68{
69 file="$1"
70 ourfile="$2"
71 theirfile="$3"
ab8e2a67
TA
72 if [ ! -L "$file" ] || \
73 [ "$(readlink "$file")" != "$(basename "$ourfile")" -a \
74 "$(readlink "$file")" != "$(basename "$theirfile")" ]; then
75 echo "*** OMINOUS WARNING ***: $file is not linked to either $(basename "$ourfile") or $(basename "$theirfile")" >&2
76 else
77 rm -f "$file"
78 fi
936cb21e
TA
79}
80
81undivert_unlink_divert()
82{
83 file="$1"
ab8e2a67
TA
84 if [ ! -L "$file" ] && [ ! -e "$file" ]; then
85 dpkg-divert --remove --rename --package "$package" "$file"
86 else
87 echo "Not removing diversion of $file by $package" >&2
88 fi
89}
90
936cb21e
TA
91undivert_unlink()
92{
93 prefix=$1
94 suffix=$2
95
96 file=$prefix$suffix
97 ourfile=$prefix$ours$suffix
98 theirfile=$prefix$theirs$suffix
99
100 undivert_unlink_symlink "$file" "$ourfile" "$theirfile"
101 undivert_unlink_divert "$file" "$package"
102}
103
104undivert_unremove()
105{
106 file=$1
107 undivert_unlink_divert "$file"
108}
109
50bf7563
AK
110check_undivert_unlink()
111{
112 prefix=$1
113 suffix=$2
114
115 file=$prefix$suffix
116 ourfile=$prefix$ours$suffix
117 theirfile=$prefix$theirs$suffix
118
dd49a2d5 119 if LC_ALL=C dpkg-divert --list "$package" | \
50bf7563
AK
120 grep -xFq "diversion of $file to $theirfile by $package"; then
121 undivert_unlink "$prefix" "$suffix"
122 fi
123}
124
125check_undivert_unremove()
126{
127 file=$1
128 removedfile=$2
dd49a2d5 129 if LC_ALL=C dpkg-divert --list "$package" | \
50bf7563
AK
130 grep -xFq "diversion of $file to $removedfile by $package"; then
131 undivert_unremove "$file"
132 fi
133}
This page took 0.307629 seconds and 5 git commands to generate.