|
0 |
#!/bin/bash
|
|
1 |
# postinst script for splix
|
|
2 |
#
|
|
3 |
# see: dh_installdeb(1)
|
|
4 |
|
|
5 |
set -e
|
|
6 |
|
|
7 |
# summary of how this script can be called:
|
|
8 |
# * <postinst> `configure' <most-recently-configured-version>
|
|
9 |
# * <old-postinst> `abort-upgrade' <new version>
|
|
10 |
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
|
|
11 |
# <new-version>
|
|
12 |
# * <postinst> `abort-remove'
|
|
13 |
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
|
|
14 |
# <failed-install-package> <version> `removing'
|
|
15 |
# <conflicting-package> <version>
|
|
16 |
# for details, see http://www.debian.org/doc/debian-policy/ or
|
|
17 |
# the debian-policy package
|
|
18 |
|
|
19 |
|
|
20 |
case "$1" in
|
|
21 |
configure)
|
|
22 |
# Do the following only if CUPS is running and the needed CUPS tools
|
|
23 |
# are available
|
|
24 |
if which lpstat > /dev/null 2>&1 && \
|
|
25 |
which lpinfo > /dev/null 2>&1 && \
|
|
26 |
which lpadmin > /dev/null 2>&1 && \
|
|
27 |
lpstat -r > /dev/null 2>&1; then
|
|
28 |
# Update the PPD files of all already installed print queues
|
|
29 |
driverregexp='lsb/usr/splix/'
|
|
30 |
gennicknameregexp='s/,(\s*SpliX|)(\s*V\.?|)\s*[\d\.]*$//i'
|
|
31 |
[ ! -z "$gennicknameregexp" ] && \
|
|
32 |
gennicknameregexp="; $gennicknameregexp"
|
|
33 |
gennicknameregexp='s/\s*\(recommended\)//'"$gennicknameregexp"
|
|
34 |
tempfiles=
|
|
35 |
trap 'rm -f $tempfiles; exit 0' 0 1 2 13 15
|
|
36 |
tmpfile1=`mktemp -t updateppds.XXXXXX`
|
|
37 |
tempfiles="$tempfiles $tmpfile1"
|
|
38 |
lpinfo -m | grep -E $driverregexp > $tmpfile1
|
|
39 |
cd /etc/cups/ppd
|
|
40 |
for ppd in *.ppd; do
|
|
41 |
[ -r "$ppd" ] || continue
|
|
42 |
queue=${ppd%.ppd}
|
|
43 |
lpstat -p "$queue" >/dev/null 2>&1 || continue
|
|
44 |
nickname=`grep '\*NickName:' "$ppd" | cut -d '"' -f 2 | perl -p -e 's/\n$//' | perl -p -e "$gennicknameregexp" | perl -p -e 's/(\W)/\\\\$1/g'`
|
|
45 |
lang=`grep '\*LanguageVersion:' "$ppd" | cut -d ' ' -f 2 | perl -e 'print lc(<>)' | perl -p -e 's/[\r\n]//gs'`
|
|
46 |
ppdfound="0"
|
|
47 |
englishppduri=""
|
|
48 |
tmpfile2=`mktemp -t updateppds.XXXXXX`
|
|
49 |
tempfiles="$tempfiles $tmpfile2"
|
|
50 |
cat $tmpfile1 | perl -p -e "$gennicknameregexp" | grep -E '^\S+\s+.*'"$nickname"'$' | cut -d ' ' -f 1 > $tmpfile2
|
|
51 |
while read newppduri; do
|
|
52 |
[ "$ppdfound" = "0" ] && lpadmin -p "$queue" -m $newppduri 2>/dev/null || continue
|
|
53 |
newlang=`grep '\*LanguageVersion:' "$ppd" | cut -d ' ' -f 2 | perl -e 'print lc(<>)' | perl -p -e 's/[\r\n]//gs'`
|
|
54 |
[ "$newlang" = "$lang" ] && ppdfound="1"
|
|
55 |
[ "$newlang" = "english" ] && englishppduri="$newppduri"
|
|
56 |
done < $tmpfile2
|
|
57 |
[ "$ppdfound" = "0" ] && [ ! -z "$englishppduri" ] && lpadmin -p "$queue" -m $englishppduri 2>/dev/null && ppdfound="1"
|
|
58 |
[ "$ppdfound" = "1" ] && echo PPD for printer $queue updated >&2
|
|
59 |
done
|
|
60 |
fi
|
|
61 |
;;
|
|
62 |
|
|
63 |
abort-upgrade|abort-remove|abort-deconfigure)
|
|
64 |
;;
|
|
65 |
|
|
66 |
*)
|
|
67 |
echo "postinst called with unknown argument \`$1'" >&2
|
|
68 |
exit 1
|
|
69 |
;;
|
|
70 |
esac
|
|
71 |
|
|
72 |
# dh_installdeb will replace this with shell code automatically
|
|
73 |
# generated by other debhelper scripts.
|
|
74 |
|
|
75 |
#DEBHELPER#
|
|
76 |
|
|
77 |
exit 0
|