~ubuntu-branches/ubuntu/raring/hplip/raring

« back to all changes in this revision

Viewing changes to debian/hpijs-ppds.postinst

  • Committer: Bazaar Package Importer
  • Author(s): Mark Purcell
  • Date: 2009-12-14 20:08:44 UTC
  • mfrom: (2.1.118 lucid)
  • Revision ID: james.westby@ubuntu.com-20091214200844-z8qhqwgppbu3t7ze
Tags: 3.9.10-4
KBSD patch from KiBi (Closes: #560796)

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
        if which lpstat > /dev/null 2>&1 && \
26
26
            which lpinfo > /dev/null 2>&1 && \
27
27
            which lpadmin > /dev/null 2>&1 && \
28
 
            lpstat -r > /dev/null 2>&1; then
 
28
            LC_ALL=C lpstat -h /var/run/cups/cups.sock -r | grep -v not > /dev/null 2>&1; then
29
29
            # Update the PPD files of all already installed print queues
30
 
            driverregexp='lsb/usr/hpijs/HP/.*\b(Postscript|PS)\b'
31
 
            gennicknameregexp='s/\s*(v\d+\.\d+|(Ver|-\s*RC)\s*[\d\.]+)//'
 
30
            driverregexp='lsb/usr/hplip/HP/.*-hpijs'
 
31
            gennicknameregexp='s/,?(\s*hpijs,?|,)\s*[\d\.]+[a-zA-Z]*\s*$//; s/\s*(Foomatic\/|)hpijs(\s*\S+|)$//i; s/\s*Series$//i; s/(HP\s+)PhotoSmart(\s+)/\1PS\2/i; s/(HP\s+)DeskJet(\s+)/\1DJ\2/i; s/(HP\s+)Color\s*(LaserJet|LJ)(\s+)/\1CLJ\3/i; s/(HP\s+)LaserJet(\s+)/\1LJ\2/i; s/(HP\s+)OfficeJet(\s+)/\1OJ\2/i; s/(HP\s+)Business\s*InkJet(\s+)/\1BIJ\2/i; s/(HP\s+)DesignJet(\s+)/\1DESIGNJ\2/i; s/(HP\s+)Printer\s*Scanner\s*Copier(\s+)/\1PSC\2/i; s/(HP\s+)Color\s*InkJet\s*Printer\s+/\1/i; s/\s+(zjs|zxs|pcl3)//i'
32
32
            [ ! -z "$gennicknameregexp" ] && \
33
33
                gennicknameregexp="; $gennicknameregexp"
34
34
            gennicknameregexp='s/\s*\(recommended\)//'"$gennicknameregexp"
35
35
            tempfiles=
36
 
            trap 'rm -f $tempfiles; exit 0' 0 1 2 13 15
 
36
            trap 'rm -f $tempfiles; exit 0' 0 HUP INT QUIT ILL ABRT PIPE TERM
37
37
            tmpfile1=`mktemp -t updateppds.XXXXXX`
38
38
            tempfiles="$tempfiles $tmpfile1"
39
 
            lpinfo -m | grep -E $driverregexp > $tmpfile1
 
39
            lpinfo -h /var/run/cups/cups.sock -m | grep -E $driverregexp > $tmpfile1
40
40
            cd /etc/cups/ppd
41
41
            for ppd in *.ppd; do
42
42
                [ -r "$ppd" ] || continue
43
43
                queue=${ppd%.ppd}
44
 
                lpstat -p "$queue" >/dev/null 2>&1 || continue
 
44
                lpstat -h /var/run/cups/cups.sock -p "$queue" >/dev/null 2>&1 || continue
45
45
                nickname=`grep '\*NickName:' "$ppd" | cut -d '"' -f 2 | perl -p -e 's/\n$//' | perl -p -e "$gennicknameregexp" | perl -p -e 's/(\W)/\\\\$1/g'`
46
46
                lang=`grep '\*LanguageVersion:' "$ppd" | cut -d ' ' -f 2 | perl -e 'print lc(<>)' | perl -p -e 's/[\r\n]//gs'`
47
47
                ppdfound="0"
48
48
                englishppduri=""
49
49
                tmpfile2=`mktemp -t updateppds.XXXXXX`
50
50
                tempfiles="$tempfiles $tmpfile2"
51
 
                cat $tmpfile1 | perl -p -e "$gennicknameregexp" | grep -E '^\S+\s+.*'"$nickname"'$' | cut -d ' ' -f 1 > $tmpfile2
 
51
                cat $tmpfile1 | perl -p -e "$gennicknameregexp; s/\s*$/\n/" | grep -E '\b'"$nickname"'$' | cut -d ' ' -f 1 > $tmpfile2
52
52
                while read newppduri; do
53
 
                    [ "$ppdfound" = "0" ] && lpadmin -p "$queue" -m $newppduri 2>/dev/null || continue
 
53
                    [ "$ppdfound" = "0" ] && lpadmin -h /var/run/cups/cups.sock -p "$queue" -m $newppduri 2>/dev/null || continue
54
54
                    newlang=`grep '\*LanguageVersion:' "$ppd" | cut -d ' ' -f 2 | perl -e 'print lc(<>)' | perl -p -e 's/[\r\n]//gs'`
55
55
                    [ "$newlang" = "$lang" ] && ppdfound="1"
56
56
                    [ "$newlang" = "english" ] && englishppduri="$newppduri"
57
57
                done < $tmpfile2
58
 
                [ "$ppdfound" = "0" ] && [ ! -z "$englishppduri" ] && lpadmin -p "$queue" -m $englishppduri 2>/dev/null && ppdfound="1"
 
58
                [ "$ppdfound" = "0" ] && [ ! -z "$englishppduri" ] && lpadmin -h /var/run/cups/cups.sock -p "$queue" -m $englishppduri 2>/dev/null && ppdfound="1"
59
59
                [ "$ppdfound" = "1" ] && echo PPD for printer $queue updated >&2
60
60
            done
61
61
        fi