From ffb1be134ffc58560a873000dcddade494d6ef3d Mon Sep 17 00:00:00 2001 From: Tim Waugh Date: Tue, 28 Jun 2011 12:44:07 +0100 Subject: [PATCH] Update IEEE 1284 Device IDs in hpijs.drv from hpcups.drv. --- copy-deviceids.py | 73 +++++++++++++++++++++++++++++++++++++++++++++++ hplip.spec | 7 +++++ 2 files changed, 80 insertions(+) create mode 100755 copy-deviceids.py diff --git a/copy-deviceids.py b/copy-deviceids.py new file mode 100755 index 0000000..978b979 --- /dev/null +++ b/copy-deviceids.py @@ -0,0 +1,73 @@ +#!/usr/bin/python +import os +import re +import sys +if len (sys.argv) < 3: + print "Specify hpcups.drv and hpijs.drv pathnames" + sys.exit (1) + +hpcups_drv = sys.argv[1] +hpijs_drv = sys.argv[2] + +# Match e.g. Attribute "ShortNickName" "" "blah" +# and catch 'blah' in group 0 +snn_re = re.compile ('^\s*Attribute\s+"ShortNickName"\s+""\s+"(.*)"\s*$') + +# Match e.g. Attribute "1284DeviceID" "" "blah" +# and catch everything before 'blah' in group 0, 'blah' in group 1, +# trailing characters in group 2 +devid_re = re.compile ('^(\s*Attribute\s+"1284DeviceID"\s+""\s+")(.*)("\s*)$') + +# Match e.g. } +end_re = re.compile ('^\s*}') + +devid_by_snn = dict() + +hpcups_lines = file (hpcups_drv, "r").readlines () +current_snn = None +for line in hpcups_lines: + if current_snn == None: + match = snn_re.match (line) + if match == None: + continue + + current_snn = match.groups ()[0] + else: + match = devid_re.match (line) + if match: + devid_by_snn[current_snn] = match.groups ()[1] + continue + + if end_re.match (line): + current_snn = None + +print >>sys.stderr, \ + "%d IEEE 1284 Device IDs loaded from %s" % (len (devid_by_snn), + os.path.basename (hpcups_drv)) + +replaced = 0 +hpijs_lines = file (hpijs_drv, "r").readlines () +current_snn = None +for line in hpijs_lines: + if current_snn == None: + match = snn_re.match (line) + if match: + current_snn = match.groups ()[0] + if current_snn.endswith (" hpijs"): + current_snn = current_snn[:-6] + else: + match = devid_re.match (line) + if match: + devid = devid_by_snn.get (current_snn) + if devid: + line = (match.groups ()[0] + devid + match.groups ()[2]) + replaced += 1 + + if end_re.match (line): + current_snn = None + + print line.rstrip ("\n") + +print >>sys.stderr, \ + "%d IEEE 1284 Device IDs replaced in %s" % (replaced, + os.path.basename (hpijs_drv)) diff --git a/hplip.spec b/hplip.spec index 37024b0..d538b36 100644 --- a/hplip.spec +++ b/hplip.spec @@ -11,6 +11,7 @@ Obsoletes: xojpanel <= 0.91 Url: http://hplip.sourceforge.net/ Source0: http://kent.dl.sourceforge.net/sourceforge/hplip/%{name}-%{version}.tar.gz Source1: hpcups-update-ppds.sh +Source2: copy-deviceids.py Patch1: hplip-pstotiff-is-rubbish.patch Patch2: hplip-strstr-const.patch Patch3: hplip-ui-optional.patch @@ -170,6 +171,11 @@ rm -rf $RPM_BUILD_DIR/%{name}-%{version} # HP Color LaserJet CM3530 MFP (bug #659381). # HP LaserJet Professional P1606dn (bug #708472). %patch5 -p1 -b .deviceIDs-drv +chmod +x %{SOURCE2} +mv prnt/drv/hpijs.drv.in{,.deviceIDs-drv-hpijs} +%{SOURCE2} prnt/drv/hpcups.drv.in \ + prnt/drv/hpijs.drv.in.deviceIDs-drv-hpijs \ + > prnt/drv/hpijs.drv.in # Stopped hpcups pointlessly trying to read spool files # directly (bug #552572). @@ -519,6 +525,7 @@ fi %changelog * Tue Jun 28 2011 Tim Waugh 3.11.5-4 - Added Device ID for HP LaserJet Professional P1606dn (bug #708472). +- Update IEEE 1284 Device IDs in hpijs.drv from hpcups.drv. * Fri Jun 10 2011 Tim Waugh 3.11.5-3 - Re-create installed hpcups PPDs unconditionally (bug #712241).